在包含数字块和NA块的向量中,例如:
score <- c(0,1,2,3,4,NA,NA,0,-1,0,1,2,NA,NA,NA)
有没有一种方法可以通过在NA块之前从最新值开始以一个递增的步长计数来模拟缺失值?
因此最终将是:
score.correct <- c(0,1,2,3,4,5,6,0,-1,0,1,2,3,4,5)
谢谢你的帮助。
最佳答案
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
如果第一个项目为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
关于通过模拟数据替换NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647572/