我有以下矢量:
v <- c(2L, 2L, NA, NA, NA, NA, 8L, NA)
如何使用前一个系列的值+ 1替换缺失值,使其变为:
c(2L, 2L, 3L, 3L, 3L, 3L, 8L, 9L)
答案 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