用平均值替换多个NA值

3
我有一个以下类型的向量:
x <- c(2,5,1,5,NA,NA,NA,9,23,1,NA,NA,NA,5,2)
是否有一种方法可以将我的NA替换为前后值的平均值?像是插值,但只使用一个值!
*更新:在这种情况下预期输出将是c(2,5,1,5,7,7,7,9,23,1,3,3,3,5,2)
非常感谢。
1个回答

5
我们可以使用来自 `zoo` 的 `na.approx`。
library(zoo)
na.approx(x, method = "constant", f = .5)
# [1]  2  5  1  5  7  7  7  9 23  1  3  3  3  5  2

关于参数f,来自?approxfun 对于method="constant"的情况, f为0到1之间的数字,表示左连续和右连续阶梯函数之间的折衷。如果y0和y1是该点左侧和右侧的值,则当f == 0时结果为y0,当f == 1时结果为y1,在中间值时结果为y0*(1-f)+y1*f。通过这种方式,即使对于非有限y值,当f==0时结果也是右连续的,当f==1时结果是左连续的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接