根据以前的值填充缺失值

时间:2016-06-29 12:54:12

标签: r

我有以下矢量:

v <- c(2L, 2L, NA, NA, NA, NA, 8L, NA)

如何使用前一个系列的值+ 1替换缺失值,使其变为:

c(2L, 2L, 3L, 3L, 3L, 3L, 8L, 9L)

2 个答案:

答案 0 :(得分:5)

如上所述,zoo具有最后观察结转功能。我们可以添加一个:

library(zoo)
v2 <- na.locf(v) 
v2[is.na(v)] <- v2[is.na(v)] + 1L
#[1] 2 2 3 3 3 3 8 9

答案 1 :(得分:0)

它不漂亮或高效,但它可以得到你想要的答案。希望其他人能够发布一些更好的代码,但这应该让你开始。

v <- c(2L, 2L, NA, NA, NA, NA, 8L, NA)
last <- NA
vec <- vector()
for (i in 1:length(v)) {
    cur <- v[i]
    if (! is.na(cur) ) {
        val <- cur
        last <- cur
    }
    else  val <- last + 1
    vec[i] <- val
}

vec