2016-08-11 4 views
1

10個の列Col1〜Col5を持つテーブルXがあるとします。 Col5は量のある列です。 SETDTで、私は、ユニークなのCol1-COL4の組み合わせの上にCOL5の合計を計算することができますsetDT - ベクトル内のすべての列をグループ化する

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

は声明で内のすべてのCol1-4の一覧を表示し、代わりに、例えばその識別ベクトルを使用する必要がないようにする方法はあります列ごとにすべてのグループ?

例えばこれは明白な理由のために動作しません:

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

が、私はそれが要因のすべてをオンにするので、集計関数を使用する必要はありません。

+3

また= cで(名(X)[1:4])で '使用することができます'や '= cで(名(X)[ - 5])でお願いします、' –

+0

あまりにも動作します: ) – koteletje

答えて

1

paste0を使用できます。

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

私はそれを動作させるためにコードを少し変更しなければならなかった setDT(X)[、リスト(合計5)、by = eval(paste0( "Col"、1:4))] ありがとう – koteletje

関連する問題