我有一个非常大的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
答案 0 :(得分:1)
unique.data.table
有by
参数,然后您可以将结果子集化以获取所需的列。
例如
unique(DT, by = c('a', 'b'))[, c('a','b'), with = FALSE]