R - 将两个数据帧与缺失和无序行组合在一起

时间:2017-12-12 21:07:09

标签: r dataframe add

我有两个数据框

merge_test_1 = t(data.frame("cats" = 1, "dogs" = 2, "horses" = 4))
merge_test_2 = t(data.frame("horses" = 1, "dogs" = 3, "rabbits" = 2))

他们看起来像这样:

       [,1]
cats      1
dogs      2
horses    4

        [,1]
horses     1
dogs       3
rabbits    2

请注意他们没有共同的所有行名称,他们共享的行名称也是不同的顺序。我想将它们组合在一起,以便我得到这样的结果:

       [,1]  [,2]
cats      1     0
dogs      2     3
horses    4     1
rabbits   0     2

最终数据框中的顺序并不重要,只要它们正确组合即可。我尝试使用" merge"命令,但我无法弄清楚。

2 个答案:

答案 0 :(得分:3)


library(dplyr)
merge_test_1 = t(data.frame(cats = 1, dogs = 2, horses = 4)) %>% as.data.frame()
merge_test_2 = t(data.frame(horses = 1, dogs = 3, rabbits = 2)) %>% as.data.frame()

# change row names into actual column
merge_test_1 <- tibble::rownames_to_column(merge_test_1)
merge_test_2 <- tibble::rownames_to_column(merge_test_2)

df <- full_join(merge_test_1, merge_test_2, by = "rowname")

# change NAs to 0
df[is.na(df)] <- 0

df
#>   rowname V1.x V1.y
#> 1    cats    1    0
#> 2    dogs    2    3
#> 3  horses    4    1
#> 4 rabbits    0    2

答案 1 :(得分:3)

我同意先前关于将rownames移动到变量的注释,但是如果您不想这样做并仅使用基本R函数,则以下代码应该有效(尽管不匹配的单元格将是{{1而不是NA)。

0