Как сделать левое соединение в R (с примерами)


Вы можете использовать функцию merge() для выполнения левого соединения в базе R:

#left join using base R
merge(df1,df2, all. x = TRUE )

Вы также можете использовать функцию left_join() из пакета dplyr для выполнения левого соединения:

#left join using dplyr
dplyr::left_join(df2, df1)

Примечание. Если вы работаете с очень большими наборами данных, функция left_join() будет работать быстрее, чем функция merge() .

В следующих примерах показано, как использовать каждую из этих функций на практике со следующими фреймами данных:

#define first data frame
df1 <- data.frame(team=c('Mavs', 'Hawks', 'Spurs', 'Nets'),
 points=c(99, 93, 96, 104))

df1

 team points
1 Mavs 99
2 Hawks 93
3 Spurs 96
4 Nets 104

#define second data frame
df2 <- data.frame(team=c('Mavs', 'Hawks', 'Spurs', 'Nets'),
 rebounds=c(25, 32, 38, 30),
 assists=c(19, 18, 22, 25))

df2

 team rebounds assists
1 Mavs 25 19
2 Hawks 32 18
3 Spurs 38 22
4 Nets 30 25

Пример 1: левое соединение с использованием основания R

Мы можем использовать функцию merge() в базе R для выполнения левого соединения, используя столбец «команда» в качестве столбца для объединения:

#perform left join using base R
merge(df1, df2, by='team', all. x = TRUE )

 team points rebounds assists
1 Hawks 93 32 18
2 Mavs 99 25 19
3 Nets 104 30 25
4 Spurs 96 38 22

Пример 2: левое соединение с использованием dplyr

Мы можем использовать функцию left_join() из пакета dplyr для выполнения левого соединения, используя столбец «команда» в качестве столбца для объединения:

library(dplyr)

#perform left join using dplyr 
left_join(df1, df2, by='team')

 team points rebounds assists
1 Mavs 99 25 19
2 Hawks 93 32 18
3 Spurs 96 38 22
4 Nets 104 30 25

Одно различие, которое вы заметите между этими двумя функциями, заключается в том, что функция merge() автоматически сортирует строки в алфавитном порядке на основе столбца, который вы использовали для выполнения объединения.

И наоборот, функция left_join() сохраняет исходный порядок строк из первого фрейма данных.

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

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

Как сделать внутреннее соединение в R
Как выполнить нечеткое сопоставление в R
Как добавить столбец во фрейм данных в R
Как удалить столбцы из фрейма данных в R