Как объединить фреймы данных по нескольким столбцам с помощью 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'), dots=c(18, 22, 19, 14)) df1 team pos points 1 AG 18 2 AF 22 3 BF 19 4 BG 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 GA 4 2 AF 9 3 BF 8 4 CG 6 5 CF 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 AG 18 4 2 AF 22 9 3 BF 19 8 4 BG 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