我有一些纵向数据,需要通过一些规则来估算缺失值:
如果缺少某人的首次随访数据,则添加下一行的值;
如果缺少某人的非第一随访数据,则添加前一行的值;
如果缺少多个连续的后续数据,则添加上一个非缺失行的值。
这是一个例子
dat<-data.frame(id=c(1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),b6=c(NA,1,1,1,1,1,1,1,1,1,NA,3,NA,NA,5,5,5,5,3,NA,NA))
dat_imputed<-data.frame(id=c(1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),b6=c(1,1,1,1,1,1,1,1,1,1,1,3,3,5,5,5,5,5,3,3,3))
感谢您的任何建议!
按ID分组,向下填充值,然后向上填充。我认为这就是您所需要的。
library(dplyr)
library(tidyr)
res <- dat %>%
group_by(id) %>%
fill(b6, .direction = "down") %>%
fill(b6, .direction = "up")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句