我有一个纵向数据框,其中包含很多看起来像这样的缺失值。
ID = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)
date = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
cond = c(0,0,0,1,0,0,0,0,1,0,0,0,0,0,0)
var = c(1, NA , 2, 0,NA, NA, 3, NA,0, NA, 2, NA, 1,NA,NA)
df = data.frame(ID, date, cond,var)
我想基于两个条件继续最后的观察:
1)什么cond=0
时候应该对感兴趣的变量的较高值进行观察。
2)什么cond=1
时候应该结转感兴趣变量的较低值。
有谁知道我如何以一种优雅的方式做到这一点?
最终数据集应如下所示
ID = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)
date = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
cond = c(0,0,0,1,0,0,0,0,1,0,0,0,0,0,0)
var = c(1, 1 , 2, 0, 0, NA, 3, 3, 0, 0,2,2,2,2,2)
final = data.frame(ID, date, cond,var)
到目前为止,我能够继续最后的观察,但我无法强加条件
library(zoo)
df <- df %>%
group_by(ID) %>%
mutate(var =
na.locf(var, na.rm = F))
欢迎任何建议