通过模拟数据替换NA

Luc*_*nes 10 r na

在包含数字块和NA块的向量中,例如:

score <- c(0,1,2,3,4,NA,NA,0,-1,0,1,2,NA,NA,NA)
Run Code Online (Sandbox Code Playgroud)

有没有办法通过在NA块之前从最新值开始向上计数来模拟缺失值?

所以最终会:

score.correct <- c(0,1,2,3,4,5,6,0,-1,0,1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Spa*_*man 4

Q+D,有一个循环,做了一些不必要的添加,但完成了工作:

incna <- function(s){
  while(any(is.na(s))){
    ina = which(is.na(s))
    s[ina]=s[ina-1]+1
  }
  s
}


> score
 [1]  0  1  2  3  4 NA NA  0 -1  0  1  2 NA NA NA
> incna(score)
 [1]  0  1  2  3  4  5  6  0 -1  0  1  2  3  4  5
Run Code Online (Sandbox Code Playgroud)

如果第一项为 NA,则失败并仅显示警告:

> score
 [1] NA  1  2  3  4 NA NA  0 -1  0  1  2 NA NA NA
> incna(score)
 [1]  5  1  2  3  4  5  3  0 -1  0  1  2  3  4  5
Warning message:
In s[ina] = s[ina - 1] + 1 :
  number of items to replace is not a multiple of replacement length
Run Code Online (Sandbox Code Playgroud)