我有一个这样的数据集
df <- data.frame(ID=c(1,1,1,1,1,2,2,2,3,3), values=c(NA, NA, 12, 13, NA, 5, NA, NA, NA, 1))
我想要一个这样的输出,这样最后一个观测值就被结转(按组),除非在一个填充值之前只有NA值,那么我希望最后一个观测值被结转:
df <- data.frame(ID=c(1,1,1,1,1,2,2,2,3,3), values=c(12, 12, 12, 13, 13, 5, 5, 5, 1, 1))
我一直在和动物园套餐里的dobur和na.locf一起工作。到目前为止,我的方法是这样的:
df%>%
group_by(PID%>%
mutate_all(funs(na.locf(., na.rm = FALSE)))
然而,这只是最后一个观察结果。在na.locf函数中的“fromLast”规范将最后一个观察值向后进位。
但是我如何连接这两个,以便使用这两个函数:
- na.LOCF,如果在第一个填写值之前没有NA值
- na.LOCF(fromLast)表示如果在填写的第一个值之前存在NA值,则向后携带最后一个观测值。
非常感谢您的评分!
1条答案
按热度按时间68bkxrlz1#
这应该是可行的: