Comment combiner deux frameworks de données basés sur deux colonnes?

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.