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