【问题标题】:conditional missing value imputation条件缺失值插补
【发布时间】:2019-05-24 06:30:07
【问题描述】:

只有当它是 2 个或更少的连续缺失值并在 R 中使用 na.locf 将其他缺失值保留为 NA 时,您如何估算缺失值? 例如,

x<-c(2,1,NA,4,4,NA,NA,NA)

输出应该是这样的

2,1,1,4,4,NA,NA,NA

第一个 NA 由先前可用的“1”估算,后 3 个 NA 不应估算。

【问题讨论】:

  • 使用包中的na.locf() zoo

标签: r zoo


【解决方案1】:

来自zoona.locf 有一个'maxgap' 参数,所以你可以简单地这样做:

library(zoo)

na.locf(x, maxgap = 2, na.rm = FALSE)
[1]  2  1  1  4  4 NA NA NA

【讨论】:

    【解决方案2】:

    我们可以使用data.table中的rleid来创建组,使用ave统计每个组的length,并且只有当该组的值为NAlength时才使用na.locf小于等于 2。

    library(data.table)
    library(zoo)
    
    ifelse(ave(x, rleid(x), FUN = length) <= 2 & is.na(x), na.locf(x), x)
    #[1]  2  1  1  4  4 NA NA NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2013-07-08
      • 1970-01-01
      • 2018-05-21
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多