r为NA分配最近的可用值

时间:2015-07-17 15:15:22

标签: r na nearest-neighbor

而不是for循环,是否有一种简短有效的方法可以将最近的可用值分配给数据帧中该列的NA?例如,有一个数据帧DF

DF <- data.frame(x = c(1:10), y1 = c(0, 10, NA,5, 20,30,7,8,9,11), y2 = c(NA, 0, NA,5, 20,30,7,8,NA,NA), z = c(95,94,90:87,88,89,90,91))

    x y1 y2  z
1   1  0 NA 95
2   2 10  0 94
3   3 NA NA 90
4   4  5  5 89
5   5 20 20 88
6   6 30 30 87
7   7  7  7 88
8   8  8  8 89
9   9  9 NA 90
10 10 11 NA 91

最终的DF应该是

    x y1 y2  z
1   1  0  0 95
2   2 10  0 94
3   3 10  0 90
4   4  5  5 89
5   5 20 20 88
6   6 30 30 87
7   7  7  7 88
8   8  8  8 89
9   9  9  8 90
10 10 11  8 91

提前致谢!

1 个答案:

答案 0 :(得分:5)

尝试

library(zoo)
na.locf(na.locf(DF), fromLast = TRUE)