Как соединить фреймы данных в нескольких столбцах с помощью dplyr


Вы можете использовать следующий базовый синтаксис для объединения фреймов данных в R на основе нескольких столбцов с помощью dplyr:

library(dplyr)

left_join(df1, df2, by=c('x1 '='x2', 'y1 '='y2'))

Этот конкретный синтаксис будет выполнять левое соединение, если выполняются следующие условия:

  • Значение в столбце x1 df1 совпадает со значением в столбце x2 df2.
  • Значение в столбце y1 в df1 совпадает со значением в столбце y2 в df2.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: объединение нескольких столбцов с помощью dplyr

Предположим, у нас есть следующие два фрейма данных в R:

#define first data frame
df1 = data.frame(team=c('A', 'A', 'B', 'B'),
 pos=c('G', 'F', 'F', 'G'),
 points=c(18, 22, 19, 14))

df1

 team pos points
1 A G 18
2 A F 22
3 B F 19
4 B G 14

#define second data frame
df2 = data.frame(team_name=c('A', 'A', 'B', 'C', 'C'),
 position=c('G', 'F', 'F', 'G', 'F'),
 assists=c(4, 9, 8, 6, 5))

df2

 team_name position assists
1 A G 4
2 A F 9
3 B F 8
4 C G 6
5 C F 5

Мы можем использовать следующий синтаксис в dplyr для выполнения левого соединения на основе двух столбцов:

library(dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c('team '='team_name', 'pos '='position'))

#view result
df3

 team pos points assists
1 A G 18 4
2 A F 22 9
3 B F 19 8
4 B G 14 NA

Результирующий фрейм данных содержит все строки из df1 и только строки из df2 , в которых совпадают значения команды и позиции.

Также обратите внимание, что если два фрейма данных имеют одинаковые имена столбцов, вы можете просто использовать следующий синтаксис для объединения нескольких столбцов:

library(dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c('team', 'position'))

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как сделать левое соединение в R
Как сделать правильное соединение в R
Как сделать внутреннее соединение в R
Как сделать внешнее соединение в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.