1
时,请“通过”变量我有一个非常大的data.table:只有崩溃data.table
DT <- data.table(a=c(1,1,1,1,2,2,2,2,3,3,3,3),b=c(1,1,2,2),c=1:12)
我需要将其折叠by
几个变量,例如列表(A,B)。易:
DT[,sum(c),by=list(a,b)]
a b V1
1: 1 1 3
2: 1 2 7
3: 2 1 11
4: 2 2 15
5: 3 1 19
6: 3 2 23
不过,我不想承担c
任何操作,我只是想砸:
DT[,,by=list(a,b)] # includes a,b,c, thus does not collapse
DT[,list(),by=list(a,b)] # zero rows
DT[,a,by=list(a,b)] # what I want but adds extraneous column a after 'by' columns
如何指定以下X
得到指示的结果?
DT[,X,by=list(a,b)]
a b
1: 1 1
2: 1 2
3: 2 1
4: 2 2
5: 3 1
6: 3 2
接受,但我用:'DT [,B,通过=列表(A,B)] [,B:= NULL]'代替。在实践中,我的'by'列表很长(5-6个变量),甚至更长。但是知道没有一个优雅的方法可以做到这一点很有帮助('unique'这里仍然包含'c'列,你已经用子查询排除了,因为我也有)。由于子查询删除* first *列'b',所以我使用列'b',因此复制除最后一列之外的任何内容都会导致我的列顺序发生更改。 – rjturn 2014-11-21 14:26:21