【问题标题】:Replacing NAs with mean of next non-NA value用下一个非 NA 值的平均值替换 NA
【发布时间】:2016-10-03 08:32:17
【问题描述】:

我得到了一个带有每小时值的 data.frame。有时我会错过几个小时的值,并希望用第一个非缺失值除以缺失值的计数 +1 来填充它(非缺失值也是其中的一部分:

即(非常简化的版本)

 c(1,NA,NA,NA,4,NA,2,1)

以及我想要的:

c(1,(4/4),(4/4),(4/4),(4/4),(2/2),(2/2),1)

这将是:

c(1,1,1,1,1,1,1,1,1)

目前我使用带有 na.locf 的动物园,它将所有 NA 替换为第一个非 na:对于我们的示例,这意味着:

c(1,4,4,4,4,2,2,1)

谢谢

【问题讨论】:

    标签: r missing-data zoo


    【解决方案1】:

    你需要结合na.locfrle

    library(zoo)
    
    ifelse(is.na(x) | is.na(c(0, head(x,-1))), 
           with(rle(na.locf(x, fromLast=T)), rep(values/lengths, lengths)), 
           x)
    [1] 1 1 1 1 1 1 1 1
    

    它也适用于:

    x = c(1, NA, 5, 3, 3, NA, NA, 1)
    #[1] 1.0000000 2.5000000 2.5000000 3.0000000 3.0000000 0.3333333 0.3333333 0.3333333
    

    【讨论】:

      猜你喜欢
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多