R 用周围环境值的平均值替换缺少的值

R 用周围环境值的平均值替换缺少的值,r,time-series,na,zoo,R,Time Series,Na,Zoo,我的数据集如下所示(我们称之为“a”): 我想用最近的环境值(系列中的上一个和下一个值)的平均值替换NA 我尝试了以下方法,但我不相信结果 miss.val = which(is.na(a$value)) library(zoo) z = zoo(a$value, a$date) z.corr = na.approx(z) z.corr[(miss.val - 1):(miss.val + 1), ] 使用包装zoo中的na.locf(上次观察结转): R> library("zoo")

我的数据集如下所示(我们称之为“a”):

我想用最近的环境值(系列中的上一个和下一个值)的平均值替换
NA

我尝试了以下方法,但我不相信结果

miss.val = which(is.na(a$value))
library(zoo)
z = zoo(a$value, a$date)
z.corr = na.approx(z)
z.corr[(miss.val - 1):(miss.val + 1), ]

使用包装
zoo
中的
na.locf
(上次观察结转):

R> library("zoo")
R> x <- c(12.2, NA, NA, 16.8, 10.1, NA, 12.0)
R> (na.locf(x) + rev(na.locf(rev(x))))/2
[1] 12.20 14.50 14.50 16.80 10.10 11.05 12.00
R>库(“动物园”)
R> x(na.locf(x)+rev(na.locf(rev(x)))/2
[1] 12.20 14.50 14.50 16.80 10.10 11.05 12.00

(如果
x
的第一个或最后一个元素是
NA
,则不起作用)

您可以使用输入数据包的移动平均值NA.ma函数在一行代码中精确执行此操作

library(imputeTS)
na_ma(yourData, k = 1)
这将用最近环境值的平均值替换缺少的值。 您甚至可以另外设置参数

na_ma(yourData, k =2, weighting = "simple")

在这种情况下,算法将在每个方向上取下2个值。您也可以选择不同的值权重(您可能希望值越近影响越大)

您考虑过插补吗?好的,但我想通过“a”数据集中的这些值更改NA。@user2165907您所要做的就是将其最后一行重定向回去,例如,
xa$value@rcs我想知道NA的最后一个相邻值是否不是数字,我的意思是,它是一种类似于NAs或离群值的字符,那么如何更改代码以找到周围值的平均值?谢谢,我不知道这个包!
na_ma(yourData, k =2, weighting = "simple")