根据行名匹配两个数据帧并添加 NA

Matching two dataframes according to rowname and adding NA

随着时间的推移,我有 3 个变量值不均匀的数据帧:

每个观察的数据框只包含有值的变量。

dataframe_a

  time_1
a    1
b    2
c    3
d    4

dataframe_b

   time_2
a    1
c    3
d    4
e    2

dataframe_c

 time_3
a    1
b    3
d    4
e    2

并想要一个数据框,例如:

  time_1 time_2 time_3
a    1      1       1
b    3     NA       3
c    4      3       NA
d    2      4       4
e    NA     2       2

我想根据行名进行匹配,如果在该观察处没有值,则添加一个缺失值 当在 dataframe/observation 3 上引入变量时,观察 1 和 2

应该有一个 NA

rbind、merge、rbind.fill 等对我没有帮助

谢谢 希望这不是一个常见问题

我认为 dplyr 包中的 full_join 函数可以帮助您:

a <- data.frame(id = c("a","b","c","d"),time_1 = 1:4)
b <- data.frame(id = c("a","c","d","e"),time_2 = c(1,3,4,2))
c <- data.frame(id = c("a","b","d","e"),time_3 = c(1,3,4,2))

require(dplyr)
d <- full_join(a,b,by = "id")
full_join(d,c)

这是 reducefull_join 的一个选项,将数据集放在 list

library(purrr)
library(dplyr)
list(a, b, c) %>%
      reduce(full_join, by = "id")