想象一下有一张桌子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)]))]
我不想使用聚合函数,因为它会将所有因素都转化为。
答案 0 :(得分:1)
您可以使用paste0
。
setDT(X)[,list(sum(Col5)), by = .(c(paste0("Col",1:4)))]