R 使用which()条件获得正确的索引

标签 r

我必须找到满足某些标准的观察结果,然后将此索引与其他数据集合并。所以我不需要满足条件的观测值的索引,而是引用所有观测值的索引。

例如,我想在给定 x2>20 的情况下找到 max(x1),然后稍后在另一个数据集中使用该索引。我需要正确的索引,换句话说:

dat <- data.frame(name= c("A","B","C","D"),
           x1= c(1,2,3,4),
           x2= c(10,20,30,40))
dat$name[which.max(dat$x1[dat$x2>20])]
[1] B

我想要得到

[1] D

即索引为 4,而不是 2。

最佳答案

这是使用数据表的一种方法

library(data.table)
dat <- as.data.table(dat)
which(dat[,name]==dat[x2>20,][which.max(x1),name])

可以使用数据框做类似的事情,但它会更加冗长。

which (dat$name==dat$name[which(dat$x2>20)][which.max(dat$x1[which(dat$x2>20)])])

请注意,此方法取决于名称包含每行的唯一值的假设。

关于R 使用which()条件获得正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37164954/

相关文章:

光栅包 : Lines around each cell

css - 如何更改 Shiny 的表格输出字体大小

r - 基于第三个变量(数字)的列联表

r - 在 ggplot2 中没有 vjust 的误差线上方的位置标签

r - 使用 Shiny R 将 react 性弹出图/图添加到 Leaflet map

r - 如何使绘图轴仅显示整数

r - dplyr - mutate_each - 对 POSIXlt 的 colswise 强制失败

r - 如何提取 lmer 输出的固定效应部分的相关性

r - 通过 R 中的一组数据点拟合自定义函数

r - 双泊松分布中的最大似然