使用by分组时删除j中所述条件的行

时间:2015-05-28 22:33:41

标签: r data.table

我想知道是否有一种更优雅的方式来实现data.table:Frist,使用by进行一些分组,然后为每个组确定j中提到的条件满足,然后删除条件为真的那些行。

我要从DT删除的行是:

DT[ , .SD[t %in% t_p1 | t %in% t_m1], by=id]

所以,要从DT中删除行,我做了:

DT[!DT[ , .I[t %in% t_p1 | t%in% t_m1], by=id]$V1]

是否有更优雅的东西,尤其是没有$V1(这里没有真正的解释)并且没有对一个变量进行分组(这只是因为选择具有相同值/子集的条目而被误导)?

1 个答案:

答案 0 :(得分:0)

一个简单的方法是:

DT[!((duplicated(id) | duplicated(id, fromLast = TRUE)) & (t %in% t_p1 | t %in% t_m1)), ]

(duplicated(id) | duplicated(id, fromLast = TRUE)by=替换为单个列,因为它会选择id中具有相同值的所有行 - 而不仅仅是(附加)重复项,但第一次出现也是如此)< / p>