如何在 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"]
是否回答了您的问题?
我有这个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"]
是否回答了您的问题?