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