Вы можете использовать следующий базовый синтаксис для объединения двух фреймов данных в R на основе нескольких столбцов:
merge(df1, df2, by. x =c('col1', 'col2'), by. y =c('col1', 'col2'))
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Объединение фреймов данных в несколько столбцов
Предположим, у нас есть следующие два фрейма данных в R:
#define data frames
df1 = data.frame(playerID=c(1, 2, 3, 4, 5, 6),
team=c('A', 'B', 'B', 'B', 'C', 'C'),
points=c(19, 22, 25, 29, 34, 39))
df2 = data.frame(playerID=c(1, 2, 3, 4),
tm=c('A', 'B', 'B', 'B'),
rebounds=c(7, 8, 8, 14))
#view first data frame
df1
playerID team points
1 1 A 19
2 2 B 22
3 3 B 25
4 4 B 29
5 5 C 34
6 6 C 39
#view second data frame
df2
playerID tm rebounds
1 1 A 7
2 2 B 8
3 3 B 8
4 4 B 14
Обратите внимание, что два фрейма данных имеют общий столбец playerID , но столбцы команд имеют разные имена в каждом фрейме данных:
- Первый фрейм данных имеет столбец « команда ».
- Второй фрейм данных имеет столбец ' tm '
Чтобы объединить эти кадры данных на основе столбцов playerID и team, нам нужно использовать аргументы by.x и by.y.
Мы можем использовать следующий код для выполнения этого слияния:
#merge two data frames
merged = merge(df1, df2, by. x =c('playerID', 'team'), by. y =c('playerID', 'tm'))
#view merged data frame
merged
playerID team points rebounds
1 1 A 19 7
2 2 B 22 8
3 3 B 25 8
4 4 B 29 14
Окончательный объединенный фрейм данных содержит данные для четырех игроков, принадлежащих к обоим исходным фреймам данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные функции, связанные с фреймами данных в R:
Как сделать левое соединение в R
Как выполнить ВПР в R
Как добавить строки во фрейм данных в R