Как объединить фреймы данных по нескольким столбцам с помощью 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *