我试图在向量中向前移动最高的观察值,替换NAs和低于最后一个最高观察值的任何值。 E.g。
c(1,2,3,NA,NA,2,NA,NA,4,NA,NA)
会变成
c(1,2,3,3,3,3,3,3,4,4,4)
以矢量化方式执行此操作的最佳方式是什么?
答案 0 :(得分:4)
x <- c(1,2,3,NA,NA,2,NA,NA,4,NA,NA)
y <- x
y[is.na(y)] <- -Inf
y <- cummax(y)
y[y == -Inf] <- NA
#[1] 1 2 3 3 3 3 3 3 4 4 4