Чи може dplyr приєднатися до декількох стовпців або складеного ключа?


111

Я розумію, що dplyrv3.0 дозволяє вам приєднуватися до різних змінних:

left_join(x, y, by = c("a" = "b")буде відповідати x.aдоy.b

Однак чи можна приєднатись до комбінації змінних чи мені потрібно заздалегідь додати складений ключ?

Щось на зразок цього:

left_join(x, y, by = c("a c" = "b d")відповідати конкатенації [ x.aі x.c] в [ y.bі y.d]

Відповіді:


199

Оновлення для використання tibble ()

Ви можете передати названий вектор довжиною більше 1 byаргументу left_join():

library(dplyr)

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

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

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

5
Дякую за це; також працює, коли стовпці в кадрах даних мають однакову назву, наприклад left_join(d1, d2, by = c("firstname" = "firstname", "lastname" = "lastname")). Можливо, для деяких це не очевидно.
Ентоні Саймон Мельничук

10
Коли стовпці приєднання однакові, ви також можете уникнути =:left_join(d1, d2, by = c("firstname", "lastname"))
davechilders

2
Ооо ... я тримався вдома, але ... це, мабуть, є І ... що, мабуть, має сенс, але я сподівався, що це буде x = x2 АБО y = y2, оскільки у мене є кілька індексів створений для спроби виявлення повторюваних, але пошкоджених записів на різних ресурсах.
Джошуа Ерік Туркотт

Імена не повинні бути однаковими, вони повинні бути просто дійсними іменами стовпців у відповідному фреймі, тобто один може мати стовпець "ім'я", а інший "ім'я", і вони будуть працювати чудово.
Сан Еммануель Джеймс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.