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


Существует два распространенных способа выполнения внутреннего соединения в 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