首页 > 解决方案 > 用一种平均值替换多个 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)

非常感谢。

标签: rvectorreplacemeanna

解决方案


我们可以na.approx使用zoo

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

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


推荐阅读