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


Вы можете использовать следующий базовый синтаксис для объединения двух фреймов данных в 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

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