用特定平均值替换NA值

时间:2019-05-05 09:01:03

标签: r mean imputation

我有一个包含列和行的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

1 个答案:

答案 0 :(得分:1)

让我们创建一些样本数据并将其转换为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