Je veux faire une jointure à gauche avec 2 data.frames sur R, en utilisant la bibliothèque data.table. Ce que j'ai:Left join Fusionner 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)
Je veux que le résultat est un nouveau cadre data.table, en étant le résultat d'une jointure LEFT JOIN, c'est:
result--> id,x,y,z
J'utilise comme guide: https://rstudio-pubs-static.s3.amazonaws.com/52230_5ae0d25125b544caab32f75f0360e775.html
merge(df1,df2,by="id",all.x=TRUE)
Mais cela me retourne:
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
Le problème avec ceci est que la colonne y est dupliquée, et je veux que cela n'apparaisse qu'une seule fois.
J'ai essayé avec tous = FAUX, all.x = T, ... mais je ne réalise pas ce que je veux.
J'ai aussi essayé d'autres solutions, comme le propose: left join in data.table
setkey(df1,id)
setkey(df2,id)
df1[df2]
Mais cette fois, dupliquer la colonne 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
Comment puis-je le faire?
Quelle est votre sortie désirée? –
Pourquoi êtes-vous surpris? Vous avez la colonne y dans les deux tableaux. Comment R supposé savoir que tu ne veux qu'un seul d'entre eux? Et lequel? –