setDT - 对向量中的所有列进行分组

时间:2016-08-11 14:34:39

标签: r

想象一下有一张桌子X,有10列Col1 - Col5。 Col5是具有金额的列。使用setDT,我可以计算Col5与唯一Col1-Col4组合的总和:

setDT(X)[,list(sum(Col5)), 
          by = .(Col1,Col2,Col3,Col4)]

有没有办法防止必须在by语句中列出每个Col1-4,而是使用一个按列标识所有组的向量?

例如,这显然不起作用:

setDT(X)[,list(sum(Col5)), 
          by = .(colnames(X[,-c(5)]))]

我不想使用聚合函数,因为它会将所有因素都转化为。

1 个答案:

答案 0 :(得分:1)

您可以使用paste0

setDT(X)[,list(sum(Col5)), by = .(c(paste0("Col",1:4)))]