我必须找到满足某些标准的观察结果,然后将此索引与其他数据集合并。所以我不需要满足条件的观测值的索引,而是引用所有观测值的索引。
例如,我想在给定 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/