【问题标题】:R Completing NAs with average of previous valuesR用先前值的平均值完成NA
【发布时间】:2020-03-25 15:32:30
【问题描述】:

我查看了几个关于 SO 的类似问题,但似乎找不到适合我的解决方案(尽管 zoo 和 tidyr 让我最接近)。我有一个包含一系列 NA 值的列的 df,需要用前 2 个滞后的平均值填充这些值。该新值需要作为下一条记录中的滞后之一包含在内,依此类推。所以是这样的:

1
2
3
4
5
NA
NA
NA

需要成为

1
2
3
4
5
4.5 
4.75 
4.625 

提前感谢您的任何建议,这里有一些示例数据可供使用。

df <- tibble::tribble(
  ~x,
  1, 
  2, 
  3, 
  4,
  5,
  NA,
  NA,
  NA
)

【问题讨论】:

    标签: r tidyr na zoo


    【解决方案1】:

    我会使用for 循环:

    for (i in 1:nrow(df)){
        if(is.na(df$x[i])){
            df$x[i] <- mean(c(df$x[i-1], df$x[i-2]))
        }
    }
    
    #    x
    #   <dbl>
    # 1  1   
    # 2  2   
    # 3  3   
    # 4  4   
    # 5  5   
    # 6  4.5 
    # 7  4.75
    # 8  4.62
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2021-07-03
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多