Je sais que je peux utiliser plyr
et ses amis pour combiner des dataframes et merge
également, mais jusqu’à présent, je ne sais pas comment fusionner deux dataframes avec plusieurs colonnes basées sur 2 colonnes?
Voir la documentation sur ?merge
, qui stipule:
By default the data frames are merged on the columns with names they both have, but separate specifications of the columns can be given by by.x and by.y.
Cela implique clairement que la merge
fusionnera des trames de données basées sur plusieurs colonnes. De l’exemple final donné dans la documentation:
x <- data.frame(k1=c(NA,NA,3,4,5), k2=c(1,NA,NA,4,5), data=1:5) y <- data.frame(k1=c(NA,2,NA,4,5), k2=c(NA,NA,3,4,5), data=1:5) merge(x, y, by=c("k1","k2")) # NA's match
Cet exemple était destiné à démontrer l'utilisation d' incomparables
, mais il illustre également la fusion à l'aide de plusieurs colonnes. Vous pouvez également spécifier des colonnes distinctes dans x
et y
utilisant by.x
et by.x
J’espère que cela t’aides;
df1 = data.frame(CustomerId=c(1:10), Hobby = c(rep("sing", 4), rep("pingpong", 3), rep("hiking", 3)), Product=c(rep("Toaster",3),rep("Phone", 2), rep("Radio",3), rep("Stereo", 2))) df2 = data.frame(CustomerId=c(2,4,6, 8, 10),State=c(rep("Alabama",2),rep("Ohio",1), rep("Cal", 2)), like=c("sing", 'hiking', "pingpong", 'hiking', "sing")) df3 = merge(df1, df2, by.x=c("CustomerId", "Hobby"), by.y=c("CustomerId", "like"))
En supposant que df1$Hobby
et df2$like
la même chose.