I am trying to do some left-join merges with data.tables.
The package description quote that
In all joins the names of the columns are irrelevant; the columns of x's key are joined to in order
I understand that I can use .data.table[
and data.table:::merge.data.table
What I would like is : merge X and Y specifying the keys (like by.x and by.y in base merge, ->why taking this away ?)
Let's suppose I have
DT = data.table(x=rep(c("a","b","c"),each=3),y=c(1,3,6),v=1:9,key="x,y,v")
DT1 = data.frame(x1=c("aa","bb","cc"),y1=c(1,3,6),v1=1:3,key="x1,y1,v1")
and I would like this output:
#data.table:::merge is masking I don't know how to call the base version of merge anymore
R) {base::merge}(DT,DT1,by.x="y",by.y="y1")
y x v x1 v1
1 1 a 1 aa 1
2 1 c 7 aa 1
3 1 b 4 aa 1
4 3 a 2 bb 2
5 3 b 5 bb 2
6 3 c 8 bb 2
7 6 b 6 cc 3
8 6 a 3 cc 3
9 6 c 9 cc 3
I am very happy to use [
or data.table:::merge
but I would like an option that do not modify DT
or DT1
(like changing the column names and calling merge and changing it back)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…