Самый простой способ выполнить перекрестное соединение в 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