I have two data.tables (dat
and results
) that share column names. On a side note, results
holds summary statistics computed earlier on *sub*groups of dat
. In other words, nrow(results) != nrow(dat)
(but I don't think this is relevant for the question)
Now I want to incorporate these results back into dat
(i.e. the original data.table) by adding a new column (i.e. NewColZ) to dat
This doesn't work as I expect:
dat[,list(colA,colB,NewColZ=results1[colX==colX & colY==colY,colZ])
,by=list(colX, colY)]
Why? because "colX" and "colY" are columns names in both data.tables (i.e. dat and results). What I want to say is, results1[take_from_self(colX)==take_from_parent(colX)]
Therefore the following works (observe I have only RENAMED the columns)
dat[,list(colA,colB,NewCol=results1[cx==colX & cy==colY,colZ,])
,by=list(colX, colY)]
Though I have a feeling that this can simply and easily be done by a join. But dat
has many more columns than results