根据rowname匹配两个数据帧并添加NA
我有3个数据帧,随着时间的推移,一个变量的值不均匀,如下所示: 每个观测值的数据帧仅包含有值的变量 数据帧根据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
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解决方案对我有效。