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


Есть два распространенных способа выполнить правое соединение в R:

Метод 1: используйте базу R

merge(df1, df2, by='column_to_join_on', all. y = TRUE )

Способ 2: используйте dplyr

library(dplyr)

right_join(df1, df2, by='column_to_join_on')

Оба метода вернут все строки из df2 и любые строки с соответствующими ключами из df1 .

Также стоит отметить, что оба метода дадут одинаковый результат, но метод 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 right join using base R
df3 <- merge(df1, df2, by='team', all. y = TRUE )

#view result
df3

 team points assists
1 A 18 4
2 B 22 9
3 C 19 14
4 D 14 13
5 L NA 10
6 M NA 8

Обратите внимание, что все строки из df2 были включены в окончательный фрейм данных, но только строки из df1 с совпадающим названием команды были включены в окончательный фрейм данных.

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

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

library(dplyr)

#perform right join using dplyr 
df3 <- right_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 L NA 10
6 M NA 8

Обратите внимание, что это соответствует результату, полученному нами при использовании функции merge() в базе R.

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

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

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