我有这个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
但是我还没有能够解决这个问题,我将不胜感激。
答案 0 :(得分:3)
@jangorecki想出了答案:
dt[, if (.N==4) .SD, by="ID"]
会回答你的问题吗?