Существует два распространенных способа выполнения внешнего соединения в R:
Метод 1: используйте базу R
merge(df1, df2, by='column_to_join_on', all= TRUE )
Способ 2: используйте dplyr
library(dplyr)
full_join(df1, df2, by='column_to_join_on')
Каждый метод вернет все строки из обеих таблиц.
Оба метода дадут одинаковый результат, но метод dplyr будет работать быстрее на очень больших наборах данных.
В следующих примерах показано, как использовать каждую из этих функций на практике со следующими фреймами данных:
#define first data frame
df1 = data.frame(team=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
points=c(18, 22, 19, 14, 14, 11, 20, 28))
df1
team points
1 A 18
2 B 22
3 C 19
4 D 14
5 E 14
6 F 11
7 G 20
8 H 28
#define second data frame
df2 = data.frame(team=c('A', 'B', 'C', 'D', 'L', 'M'),
assists=c(4, 9, 14, 13, 10, 8))
df2
team assists
1 A 4
2 B 9
3 C 14
4 D 13
5 L 10
6 M 8
Пример 1: внешнее соединение с использованием базы R
Мы можем использовать функцию merge() в базе R для выполнения внешнего соединения, используя столбец «команда» в качестве столбца для объединения:
#perform outer join using base R
df3 <- merge(df1, df2, by='team', all= TRUE )
#view result
df3
team points assists
1 A 18 4
2 B 22 9
3 C 19 14
4 D 14 13
5 E 14 NA
6 F 11 NA
7 G 20 NA
8 H 28 NA
9 L NA 10
10 M NA 8
Обратите внимание, что возвращаются все строки из обоих фреймов данных.
Пример 2: внешнее соединение с использованием dplyr
Мы можем использовать функцию full_join() из пакета dplyr для выполнения внешнего соединения, используя столбец «команда» в качестве столбца для соединения:
library(dplyr)
#perform outer join using dplyr
df3 <- full_join(df1, df2, by='team')
#view result
df3
team points assists
1 A 18 4
2 B 22 9
3 C 19 14
4 D 14 13
5 E 14 NA
6 F 11 NA
7 G 20 NA
8 H 28 NA
9 L NA 10
10 M NA 8
Обратите внимание, что это соответствует результату, полученному нами при использовании функции merge() в базе R.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как сделать левое соединение в R
Как сделать правильное соединение в R
Как сделать внутреннее соединение в R