用一个均值替换多个NA

bru*_*ier 3 replace r vector mean na

我有一个以下类型的矢量:

x <- c(2,5,1,5,NA,NA,NA,9,23,1,NA,NA,NA,5,2)

有没有办法用NA之前和之后的值的平均值替换我的NA?就像插值它们一样,但是有一个值!

*更新:在这种情况下的预期输出将是 c(2,5,1,5,7,7,7,9,23,1,3,3,3,5,2)

非常感谢.

mar*_*kus 5

我们可以使用na.approxzoo

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
Run Code Online (Sandbox Code Playgroud)

关于这个论点f,来自?approxfun

for method ="constant"0到1之间的数字,表示左连续和右连续步进函数之间的折衷.如果y0和y1是该点左侧和右侧的值,则如果f == 0,则值为y0;如果f == 1,则值为y1;对于中间值,y0*(1-f)+ y1*f.这样,对于f == 0,结果是右连续的,对于f == 1,结果是左连续的,即使对于非有限y值也是如此