LEFT JOIN合并data.table
问题描述:
我想做一个左2个data.frames上R,使用data.table库联接。我拥有的一切:LEFT JOIN合并data.table
library(data.table)
id<-c("a1","a2","a3","a4")
id2<-c("a2","a3","a1","a4")
y<-c(1,2,3,4)
z<-c(3,5,6,7)
k<-c(1,3,8,7)
df1<-data.table(id,y,z)
id<-c("a2","a3","a1","a4")
df2<-data.table(id,k,y)
我想要的结果是一个新的data.table框架,这是左连接的结果,这就是:
result--> id,x,y,z
我用这个作为指导: https://rstudio-pubs-static.s3.amazonaws.com/52230_5ae0d25125b544caab32f75f0360e775.html
merge(df1,df2,by="id",all.x=TRUE)
但是这回我:
id y.x z x y.y
1: a1 1 3 3 3
2: a2 2 5 0 1
3: a3 3 6 2 2
4: a4 4 7 1 4
与此问题是,列y是重复的,我希望只出现一次。
我已经尝试了所有= FALSE,all.x = T,......但我不达到我想要的。
我也尝试过其他的解决方案,如建议:再次left join in data.table
setkey(df1,id)
setkey(df2,id)
df1[df2]
但对此,复制在Y列。
id y z k i.y
1: a1 1 3 8 3
2: a2 2 5 1 1
3: a3 3 6 3 2
4: a4 4 7 7 4
我该怎么办?
答
您可以通过删除其中一个表中的列y
来合并df1
和df2
。尝试dplyr::left_join(df1, df2[, -c("y")], by = "id")
或merge(df1, df2[, -c("y")], by = "id")
。
你想要的输出是什么? –
你为什么感到惊讶?你在这两个表中都有y列。 R应该如何知道你只想要其中的一个?哪一个? –