Существует два распространенных способа выполнения внутреннего соединения в R:
Метод 1: используйте базу R
merge(df1, df2, by='column_to_join_on')
Способ 2: используйте dplyr
library(dplyr)
inner_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', 'G', 'H'),
assists=c(4, 9, 14, 13, 10, 8))
df2
team assists
1 A 4
2 B 9
3 C 14
4 D 13
5 G 10
6 H 8
Пример 1: внутреннее соединение с использованием базы R
Мы можем использовать функцию merge() в базе R для выполнения внутреннего соединения, используя столбец «команда» в качестве столбца для объединения:
#perform inner join using base R
df3 <- merge(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 G 20 10
6 H 28 8
Обратите внимание, что только команды, которые были в обоих наборах данных, сохраняются в окончательном наборе данных.
Пример 2: внутреннее соединение с использованием dplyr
Мы можем использовать функцию inner_join() из пакета dplyr для выполнения внутреннего соединения, используя столбец «команда» в качестве столбца для объединения:
library(dplyr)
#perform inner join using dplyr
df3 <- inner_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 G 20 10
6 H 28 8
Обратите внимание, что это соответствует результату, полученному нами при использовании функции merge() в базе R.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как сделать левое соединение в R
Как сделать правильное соединение в R
Как добавить столбец во фрейм данных в R
Как удалить столбцы из фрейма данных в R