web-dev-qa-db-fra.com

Dplyr peut-il rejoindre plusieurs colonnes ou clés composites?

Je réalise que dplyr v3.0 vous permet de joindre différentes variables:

left_join(x, y, by = c("a" = "b") fera correspondre x.a à y.b

Cependant, est-il possible de joindre une combinaison de variables ou dois-je préalablement ajouter une clé composite?

Quelque chose comme ça:

left_join(x, y, by = c("a c" = "b d") pour correspondre à la concaténation de [x.a et x.c] à [y.b et y.d]

89
JasonAizkalns

Vous pouvez passer un vecteur nommé de longueur supérieure à 1 à l'argument by de 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"))
154
davechilders