如何在 data.table 中使用 key by 进行子集化时跳过组?

How can I skip groups while subsetting with key by in data.table?

我有这个DT:

dt=data.table(ID=c(rep(letters[1:2],each=4),'b'),value=seq(1,9))
   ID value
1:  a     1
2:  a     2
3:  a     3
4:  a     4
5:  b     5
6:  b     6
7:  b     7
8:  b     8
9:  b     9

我需要在子集化时消除组,但前提是数据满足某些条件。这样的东西不起作用:

dt[,{if (.N==4) .SD else NULL
     v1},by="ID"]

所以我需要删除不符合条件的组。在此示例中,我想跳过长度不同于 4 的组。这样我得到:

   ID value
1:  a     1
2:  a     2
3:  a     3
4:  a     4

但我无法解决这个问题,如果有任何帮助,我将不胜感激。

@jangorecki 给出了答案:

dt[, if (.N==4) .SD, by="ID"] 是否回答了您的问题?