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

时间:2019-09-20 15:57:14

标签: r dataframe merge rbind

我有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

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

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

谢谢 希望这不是一个普遍的问题

2 个答案:

答案 0 :(得分:4)

在将数据集放入reduce后,这是full_joinlist的一个选项

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

答案 1 :(得分:0)

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

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)