使用smartbind合并数据

时间:2015-05-13 13:56:54

标签: r

我有2个数据表,一个用于:

    X1          X2          X3          X4
1   ClaimIDs    ClaimIDs    ClaimIDs    ClaimIDs
2   427         419         399         399 

和另一个

    row.names   X1  X2  X3  X4
1   3852        0   0   0   20
2   3853        0   0   0   8
3   3854        0   0   0   10

我想这样看起来像这样:

    row.names   X1          X2          X3          X4
1   NA          ClaimIDs    ClaimIDs    ClaimIDs    ClaimIDs
2   NA          427         419         399         399 
3   3852        0           0           0           20
4   3853        0           0           0           8
5   3854        0           0           0           10

我已经尝试了从r和c绑定到smartbind的所有内容,甚至使用了列表变量。它总是输出有太多列填充NA或没有添加3852,3853,3854到正确的位置。任何帮助是极大的赞赏!我可以提供解决此问题所需的任何代码。

1 个答案:

答案 0 :(得分:3)

尝试merge

 merge(df1, df2, by=names(df1), all=TRUE)
 #           X1       X2       X3       X4 row.names
 #1        0        0        0       10      3854
 #2        0        0        0       20      3852
 #3        0        0        0        8      3853
 #4      427      419      399      399        NA
 #5 ClaimIDs ClaimIDs ClaimIDs ClaimIDs        NA

或者

 library(data.table)
 rbindlist(list(df1, df2), fill=TRUE)
 #         X1       X2       X3       X4 row.names
 #1: ClaimIDs ClaimIDs ClaimIDs ClaimIDs        NA
 #2:      427      419      399      399        NA
 #3:        0        0        0       20      3852
 #4:        0        0        0        8      3853
 #5:        0        0        0       10      3854

数据

 df1 <- structure(list(X1 = c("ClaimIDs", "427"), X2 = c("ClaimIDs", 
 "419"), X3 = c("ClaimIDs", "399"), X4 = c("ClaimIDs", "399")),
.Names = c("X1", 
"X2", "X3", "X4"), class = "data.frame", row.names = c("1", "2"))

 df2 <- structure(list(row.names = 3852:3854, X1 = c(0L, 0L, 0L), 
 X2 = c(0L, 
 0L, 0L), X3 = c(0L, 0L, 0L), X4 = c(20L, 8L, 10L)),
.Names = c("row.names", 
"X1", "X2", "X3", "X4"), class = "data.frame", 
 row.names = c("1", "2", "3"))