当向量有几个 NaN 时,如何在 R 中内插/外推?

问题描述

我有一个向量,其中包含几个 NaN。例如,

d=c(NaN,2,3,4,7,NaN,8,5,6,NaN)

我想做一些解释来替换 NaN。对我来说,困难在于我不知道我有多少个 NaN 以及它们在哪里。

非常感谢。

解决方法

您可以使用 zoo 函数执行线性插值。

d=c(NaN,2,3,4,7,NaN,8,5,6,NaN)

zoo::na.spline(d)
# [1]  1.86  2.00  3.00  4.00  4.00  2.00  4.00  7.00  9.08  9.61  8.00  5.00  6.00 15.06

zoo::na.approx(d,na.rm = FALSE)
#[1]   NA 2.00 3.00 4.00 4.00 2.00 4.00 7.00 7.33 7.67 8.00 5.00 6.00   NA
,

我们可以使用 na_interpolation 中的 imputeTS 和几个选项: 见:https://www.rdocumentation.org/packages/imputeTS/versions/3.2/topics/na.interpolation

library(imputeTS)
na_interpolation(d,option = "linear",maxgap = Inf)

输出:

> na_interpolation(d,maxgap = Inf)
 [1] 2.000000 2.000000 3.000000 4.000000 4.000000 2.000000 4.000000 7.000000 7.333333 7.666667 8.000000 5.000000 6.000000
[14] 6.000000

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...