首页 > 解决方案 > 用特定的平均值替换 NA 值

问题描述

我有一个带有列和行的data.frame。我如何替换 NA 值,使其成为该列中该单元格之前和之后的第一个值的平均值?

例如:

 1. 1 2  3 
 2. 4 NA 7
 3. 9 NA 8 
 4. 1 5  6

我需要第一个NA成为——(5+2)/2=3.5 第二个成为be (3.5+5)/2=4.25

标签: rmeanimputation

解决方案


让我们创建一些示例数据并将其转换为data.table

require(data.table)
require(zoo)
dat <- data.frame(a = c(1, 2, NA, 4)) 
setDT(dat)

现在,使用该zoo::na.approx函数我们可以估算缺失值。

dat[, newA:= na.approx(a, rule = 2)]

输出:

   a newA
1:  1    1
2:  2    2
3: NA    3
4:  4    4

推荐阅读