Ich weiß, dass ich plyr
und seine Freunde verwenden kann, um auch Datenframes und merge
zu kombinieren, aber bis jetzt weiß ich nicht, wie zwei Datenframes mit mehreren Spalten zusammengefügt werden, die auf zwei Spalten basieren.
Siehe die Dokumentation zu ?merge
, in der es heißt:
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.
Dies impliziert eindeutig, dass merge
Datenrahmen basierend auf mehr als einer Spalte zusammenführt. Aus dem letzten Beispiel in der Dokumentation:
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
In diesem Beispiel sollte die Verwendung von incomparables
veranschaulicht werden, es wird jedoch auch das Zusammenführen mit mehreren Spalten veranschaulicht. Sie können auch in x
und y
separate Spalten angeben, indem Sie by.x
und by.y
verwenden.
Hoffe das hilft;
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"))
Angenommen, df1$Hobby
und df2$like
bedeuten dasselbe.
Sie können auch den join-Befehl (dplyr) verwenden.
Zum Beispiel:
new_dataset <- dataset1 %>% right_join(dataset2, by=c("column1","column2"))