折叠data.table时仅保留'by'变量

时间:2014-11-20 22:58:32

标签: r 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

1 个答案:

答案 0 :(得分:1)

unique.data.tableby参数,然后您可以将结果子集化以获取所需的列。

例如

unique(DT, by = c('a', 'b'))[, c('a','b'), with = FALSE]