1

列名を共有する2 つの data.tables (datおよび) があります。results補足として、 の*サブ* グループでresults以前に計算された要約統計を保持します。言い換えれば、(しかし、これは質問に関連しているとは思いません)新しい列(NewColZ)を追加して、これらの結果を元のdata.tableに組み込みたいと思いますdatnrow(results) != nrow(dat)datdat

これは私が期待するように動作しません:

dat[,list(colA,colB,NewColZ=results1[colX==colX & colY==colY,colZ])
   ,by=list(colX, colY)]

なんで?"colX" と "colY" は両方の data.tables (つまり、dat と results) の列名であるためです。私が言いたいのは、results1[take_from_self(colX)==take_from_parent(colX)]

したがって、次のように機能します(列の名前を変更しただけであることに注意してください)

dat[,list(colA,colB,NewCol=results1[cx==colX & cy==colY,colZ,])
   ,by=list(colX, colY)]

これはジョインで簡単にできる気がしますが。しかしdat、よりも多くの列がありますresults

4

1 に答える 1