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

时间:2016-04-26 15:46:16

标签: r group-by data.table aggregate subset

我有这个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

但是我还没有能够解决这个问题,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

@jangorecki想出了答案:

dt[, if (.N==4) .SD, by="ID"]会回答你的问题吗?