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

根据rowname匹配两个数据帧并添加NA,r,dataframe,merge,rbind,R,Dataframe,Merge,Rbind,我有3个数据帧,随着时间的推移,一个变量的值不均匀,如下所示: 每个观测值的数据帧仅包含有值的变量 数据帧 time_1 a 1 b 2 c 3 d 4 数据帧 time_2 a 1 c 3 d 4 e 2 数据帧 time_3 a 1 b 3 d 4 e 2 并且需要一个数据帧,例如: time_1 time_2 time_3 a 1 1 1 b 3 NA

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

每个观测值的数据帧仅包含有值的变量

数据帧

  time_1
a    1
b    2
c    3
d    4
数据帧

   time_2
a    1
c    3
d    4
e    2
数据帧

 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
我想根据rowname进行匹配,如果在该观察值处没有值,则添加一个缺少的值 当在数据帧/观测值3上引入变量时,观测值1和2应为NA

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

多谢各位
希望这不是一个常见的问题

我认为
dplyr
软件包中的
full\u 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)

a在将数据集放入
列表后,这里有一个选项可以使用
reduce
full\u join

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

既然你说那些功能不起作用,你到底试过什么?看起来像是一对简单的左joinsHow,观察
b
会得到时间1的
3
?对于变量
time\u 1
,与
c
d
获取
4
2
相同?这不是一个合并或合并的问题,除非那些是打字错误。你是对的,那些是打字错误。我的想法是,不是每个观测中的每个变量都有一个值,而是每个观测都有一个数据帧,其中只包含观测变量的值。这就是不匹配的原因。提供的reduce fulljoin解决方案对我有效。