【问题标题】:How to interpolate/ extrapolate in R when the vector has several NaNs?当向量有多个 NaN 时,如何在 R 中进行插值/外推?
【发布时间】:2021-08-21 05:30:30
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

    标签: r interpolation nan spline extrapolation


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      【解决方案2】:

      我们可以使用来自imputeTSna_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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多