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


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

library(dplyr)

bind_rows(df1, df2)

В следующем примере показано, как использовать эту функцию на практике.

Пример: объединение двух фреймов данных с разными столбцами

Предположим, у нас есть следующие два фрейма данных в R:

#define first data frame
df1 <- data.frame(A=c(1, 6, 3, 7, 5),
 B=c(7, 9, 8, 3, 2),
 C=c(3, 5, 2, 9, 9))

df1

 A B C
1 1 7 3
2 6 9 5
3 3 8 2
4 7 3 9
5 5 2 9

#define second data frame
df2 <- data.frame(B=c(1, 3, 3, 4, 5),
 C=c(7, 7, 8, 3, 2),
 D=c(3, 3, 6, 6, 8))

df2

 B C D
1 1 7 3
2 3 7 3
3 3 8 6
4 4 3 6
5 5 2 8

Обратите внимание, что df1 имеет следующие имена столбцов:

  • А
  • Б
  • С

И обратите внимание, что df2 имеет следующие имена столбцов:

  • Б
  • С
  • Д

Имена столбцов не совпадают, поэтому функция rbind() в R выдаст ошибку, если мы попытаемся ее использовать.

#attempt to use rbind to row bind data frames
rbind(df1, df2)

Error in match.names(clabs, names(xi)) : 
 names do not match previous names

Вместо этого мы можем использовать функцию bind_rows() из пакета dplyr, чтобы объединить эти два фрейма данных и просто заполнить недостающие значения в результирующем фрейме данных значениями NA:

library(dplyr)

#combine df1 and df2
bind_rows(df1, df2)

 A B C D
1 1 7 3 NA
2 6 9 5 NA
3 3 8 2 NA
4 7 3 9 NA
5 5 2 9 NA
6 NA 1 7 3
7 NA 3 7 3
8 NA 3 8 6
9 NA 4 3 6
10 NA 5 2 8

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

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