【发布时间】:2019-04-10 13:13:20
【问题描述】:
我想合并大约 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 的列数和行数不同)但未能这样做。
有什么想法吗?
编辑:显然问题在于我的两个数据集中的类在某些列名所在的情况下并不相同。我会在它开始工作后发布更新。
【问题讨论】:
标签: r merge data.table