通过模拟数据替换NA

标签 r na

在包含数字块和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/

相关文章:

R - 从单词列创建句子 ID

r - 为每个组 ID 创建所有可能的非 NA 值组合

r - 如何用 NA 替换 data.frame 中不等于随机选择的值的列中的值?

r - NA 值的 ggplot 排序顺序处理

python - 获取支持 NA/可为空的 boolean pandas 列

r - 使用 Rmarkdown (pagedown) 和更改目录

r - "*apply"家族真的没有矢量化吗?

javascript - 将 CSS 样式应用于数据表中的特定列

r - 如何在 Shiny 中从 server.R 解析为 HTML 标签

r - 根据某个变量将许多列变为 NA