列名を共有する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