我有如下数据:
require("data.table")
dt1 <- data.table(
code=c("A001", "A001","A001","A002","A002","A002","A002","A003","A003"),
value=c(40,38,55,10,12,16,18,77,87))
我想对其进行子集化,以便保留包含大于或小于给定数字的值的任何组(code
)。例如,如果我想要包含值大于50的任何组,则结果将如下所示:
dt2 <- data.table(
code=c("A001", "A001","A001","A003","A003"),
value=c(40,38,55,77,87))
答案 0 :(得分:7)
在按“代码”分组以对行进行子集化之后,我们用any
创建条件
dt1[, if(any(value > 50)) .SD, code]
或者没有if
条件
dt1[, .SD[any(value > 50)], code]
或获取行索引(.I
)和基于该行的子集
dt1[dt1[, .I[any(value > 50)], code]$V1]