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



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

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

我想做一些推断来代替NaN。对我来说,困难在于我不知道我有多少NaN,它们在哪里。

非常感谢。

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

d=c(NaN,2,3,4,4,2,4,7,NaN,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

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

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

输出:

> na_interpolation(d, option = "linear", 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

相关内容

  • 没有找到相关文章