【发布时间】:2019-03-06 09:51:00
【问题描述】:
我有以下类型的向量:
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)
非常感谢。
【问题讨论】:
我有以下类型的向量:
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)
非常感谢。
【问题讨论】:
我们可以从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
for method = "constant" 介于 0 和 1 之间的数字,表示左右连续阶跃函数之间的折衷。如果 y0 和 y1 是点左侧和右侧的值,则如果 f == 0,则值为 y0,如果 f == 1,则值为 y1,中间值为 y0*(1-f)+y1*f。这样,结果对于 f == 0 是右连续的,对于 f == 1 是左连续的,即使对于非有限 y 值也是如此
【讨论】: