Вы можете использовать следующий базовый синтаксис для объединения фреймов данных в 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