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


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

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

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

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

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=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 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

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

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

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

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=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 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *