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


Самый простой способ выполнить перекрестное соединение в R — использовать функцию crossing() из пакета tidyr :

library(tidyr)

#perform cross join on df1 and df2
crossing(df1, df2)

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

Пример: выполнение перекрестного соединения в R

Предположим, у нас есть следующие два фрейма данных в R:

#define first data frame
df1 = data.frame(team1=c('A', 'B', 'C', 'D'),
 points=c(18, 22, 19, 14))

df1

 team1 points
1 A 18
2 B 22
3 C 19
4 D 14

#define second data frame
df2 = data.frame(team2=c('A', 'B', 'F'),
 assists=c(4, 9, 8)) 

df2

 team2 assists
1 A 4
2 B 9
3 F 8

Мы можем использовать функцию crossing() из пакета tidyr для выполнения перекрестного соединения этих двух фреймов данных:

library(tidyr)

#perform cross join 
cross <- crossing(df1, df2)

#view result
cross

# A tibble: 12 x 4
 team1 points team2 assists

 1 A 18 A 4
 2 A 18 B 9
 3 A 18 F 8
 4 B 22 A 4
 5 B 22 B 9
 6 B 22 F 8
 7 C 19 A 4
 8 C 19 B 9
 9 C 19 F 8
10 D 14 A 4
11 D 14 B 9
12 D 14 F 8

Результатом является фрейм данных, который содержит все возможные комбинации строк из каждого фрейма данных.

Например, первая строка первого фрейма данных содержит команду А и 18 очков. Эта строка сопоставляется с каждой отдельной строкой во втором фрейме данных.

Далее вторая строка первого фрейма данных содержит команду B и 22 очка. Эта строка также сопоставляется с каждой отдельной строкой во втором фрейме данных.

Конечным результатом является фрейм данных с 12 строками.

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.