我的数据看起来像这样:
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))
我们在用'code'分组后用any
创建一个条件来对行进行子集化
dt1[, if(any(value > 50)) .SD, code]
或者没有if
条件
dt1[, .SD[any(value > 50)], code]
或者根据它得到行索引(.I
)和子集
dt1[dt1[, .I[any(value > 50)], code]$V1]