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


Вы можете использовать следующие методы для объединения фреймов данных по именам столбцов в R:

Метод 1: объединение на основе одного совпадающего имени столбца

merge(df1, df2, by='var1')

Способ 2: слияние на основе одного несопоставленного имени столбца

merge(df1, df2, by. x ='var1', by. y ='variable1')

Способ 3: объединение на основе нескольких совпадающих имен столбцов

merge(df1, df2, by=c('var1', 'var2'))

Метод 4: слияние на основе нескольких несовпадающих имен столбцов

merge(df1, df2, by. x =c('var1', 'var2'), by. y =c('variable1', 'variable2'))

В следующих примерах показано, как использовать каждый метод на практике.

Пример 1. Слияние на основе одного совпадающего имени столбца

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

#define data frames
df1 <- data.frame(team=c('A', 'B', 'C', 'D'),
 points=c(88, 98, 104, 100))

df2 <- data.frame(team=c('A', 'B', 'C', 'D'),
 rebounds=c(22, 31, 29, 20))

#merge based on one column with matching name
merge(df1, df2, by='team')

 team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

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

Пример 2. Слияние на основе одного несовпадающего имени столбца

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

#define data frames
df1 <- data.frame(team=c('A', 'B', 'C', 'D'),
 points=c(88, 98, 104, 100))

df2 <- data.frame(team_name=c('A', 'B', 'C', 'D'),
 rebounds=c(22, 31, 29, 20))

#merge based on one column with unmatched name
merge(df1, df2, by. x ='team', by. y ='team_name')

 team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

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

Пример 3. Слияние на основе нескольких совпадающих имен столбцов

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

#define data frames
df1 <- data.frame(team=c('A', 'A', 'B', 'B'),
 position=c('G', 'F', 'G', 'F'),
 points=c(88, 98, 104, 100))

df2 <- data.frame(team=c('A', 'A', 'B', 'B'),
 position=c('G', 'F', 'G', 'F'),
 rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by=c('team', 'position'))

 team position points rebounds
1 A F 98 31
2 A G 88 22
3 B F 100 20
4 B G 104 29

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

Пример 4. Слияние на основе нескольких несовпадающих имен столбцов

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

#define data frames
df1 <- data.frame(team=c('A', 'A', 'B', 'B'),
 position=c('G', 'F', 'G', 'F'),
 points=c(88, 98, 104, 100))

df2 <- data.frame(team_name=c('A', 'A', 'B', 'B'),
 position_name=c('G', 'F', 'G', 'F'),
 rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by. x =c('team', 'position'), by. y =c('team_name', 'position_name'))

 team position points rebounds
1 A F 98 31
2 A G 88 22
3 B F 100 20
4 B G 104 29

Результатом является один фрейм данных, который сопоставляет строки, используя столбцы team и position в первом фрейме данных и столбцы team_name и position_name во втором фрейме данных.

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

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

Как сделать левое соединение в R
Как сделать внутреннее соединение в R
Как выполнить ВПР в R
Как добавить строки во фрейм данных в R

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