2014-10-28 12 views
57

ich die dplyr v3.0 erkennen, können Sie sich auf verschiedene Variablen verbinden:Kann dplyr auf mehreren Spalten oder zusammengesetzten Schlüssel beitreten?

left_join(x, y, by = c("a" = "b") wird x.a zu y.b

jedoch übereinstimmen, ist es möglich, auf einer Kombination von Variablen zu verbinden? Oder muss ich im Voraus einen zusammengesetzten Schlüssel hinzufügen?

Das ist etwas, wie:

left_join(x, y, by = c("a c" = "b d") die Verkettung von übereinstimmen [x.a und x.c] bis [y.b und y.d]

Antwort

96

Sie können einen benannten Vektor der Länge größer als 1 zu dem by Argument übergeben left_join():

library(dplyr) 

d1 <- data_frame(
    x = letters[1:3], 
    y = LETTERS[1:3], 
    a = rnorm(3) 
) 

d2 <- data_frame(
    x2 = letters[3:1], 
    y2 = LETTERS[3:1], 
    b = rnorm(3) 
) 

left_join(d1, d2, by = c("x" = "x2", "y" = "y2")) 
+0

Danke dafür; funktioniert auch, wenn die Spalten in den Datenrahmen den gleichen Namen haben, z. 'left_join (d1, d2, durch = c (" Vorname "=" Vorname "," Nachname "=" Nachname "))'. Für manche vielleicht nicht offensichtlich. –

+0

Wenn die Join-Spalten identisch sind, können Sie auch das '=' vermeiden: 'left_join (d1, d2, by = c (" Vorname "," Nachname "))' – davechilders

Verwandte Themen