使用 by 分组时删除条件为 j 的行
Delete row with condition stated in j while grouping with by
我想知道是否有更优雅的方法来实现以下 data.table:首先,使用 by
进行一些分组,然后为每个组确定是否 data.table 中提到的条件=13=]被满足,然后删除那些条件为真的行。
我要从 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
(这在这里并不是真正的不言自明)并且没有对一个变量进行分组(这只是误用于选择具有相同 value/subsetting 的条目)?
一个简单的方法是:
DT[!((duplicated(id) | duplicated(id, fromLast = TRUE)) & (t %in% t_p1 | t %in% t_m1)), ]
(duplicated(id) | duplicated(id, fromLast = TRUE)
将 by=
替换为单个列,因为它会选择 id
中具有相同值的所有行 - 不仅是(额外的)重复项,还有第一次出现的行)
我想知道是否有更优雅的方法来实现以下 data.table:首先,使用 by
进行一些分组,然后为每个组确定是否 data.table 中提到的条件=13=]被满足,然后删除那些条件为真的行。
我要从 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
(这在这里并不是真正的不言自明)并且没有对一个变量进行分组(这只是误用于选择具有相同 value/subsetting 的条目)?
一个简单的方法是:
DT[!((duplicated(id) | duplicated(id, fromLast = TRUE)) & (t %in% t_p1 | t %in% t_m1)), ]
(duplicated(id) | duplicated(id, fromLast = TRUE)
将 by=
替换为单个列,因为它会选择 id
中具有相同值的所有行 - 不仅是(额外的)重复项,还有第一次出现的行)