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