Я хочу объединить около 27 различных наборов данных. Для каждого из этих наборов данных есть много одинаковых столбцов, но также много столбцов, которые не идентичны. Мне бы хотелось, чтобы идентичные столбцы «складывались», а неидентичные столбцы просто добавлялись.
Предположим, что наборы данных 1 и 2 выглядят следующим образом:
library(data.table)
df1 <- fread(
"A B C iso year
0 1 1 NLD 2009
1 0 2 NLD 2009
0 0 3 AUS 2011
1 0 4 AUS 2011
0 1 7 NLD 2008
1 0 1 NLD 2008
0 0 3 AUS 2012",
header = TRUE
)
df2 <- fread(
"A B D E iso year
0 1 1 NA ECU 2009
1 0 2 0 ECU 2009
0 0 3 0 BRA 2011
1 0 4 0 BRA 2011
0 1 7 NA ECU 2008
1 0 1 0 ECU 2008
0 0 3 2 BRA 2012
1 0 4 NA BRA 2012",
header = TRUE
)
Теперь я хотел бы соединить эти df с:
rbind(df1, df2, fill=TRUE)
Объединенный набор данных должен выглядеть следующим образом:
df_merged <- fread(
"A B C D E iso year
0 1 1 NA NA NLD 2009
1 0 2 NA NA NLD 2009
0 0 3 NA NA AUS 2011
1 0 4 NA NA AUS 2011
0 1 7 NA NA NLD 2008
1 0 1 NA NA NLD 2008
0 0 3 NA NA AUS 2012
0 1 NA 1 NA ECU 2009
1 0 NA 2 0 ECU 2009
0 0 NA 3 0 BRA 2011
1 0 NA 4 0 BRA 2011
0 1 NA 7 NA ECU 2008
1 0 NA 1 0 ECU 2008
0 0 NA 3 2 BRA 2012
1 0 NA 4 NA BRA 2012",",
header = TRUE
)
Однако по какой-то причине при применении этого к фактическим данным я получаю ошибку:
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
Я пытался воссоздать ошибку в моем примере (путем изменения количества столбцов и строк для df), но не смог этого сделать.
Есть идеи?
РЕДАКТИРОВАТЬ: Итак, очевидно, проблема заключалась в том, что классы в моих двух наборах данных не были идентичны в некоторых случаях, где имена столбцов были. Я опубликую обновление после того, как я заставлю его работать.