R中的插值

时间:2013-07-26 15:18:50

标签: r interpolation

我有每小时的时间序列,并希望每15分钟插入一个小时的小时值。线性插值可以。但如果有任何方法可以指定Gaussian,Polynomial,那就太棒了。

例如,如果我有

a< -c(4.5,7,3.3),这是前三个小时的数据。在这种情况下,如何获得15分钟的小时数据,总共9个值?我一直在使用近似函数和研究动物园包,但仍然不知道我怎么做。非常感谢你!

2 个答案:

答案 0 :(得分:2)

这个怎么样:

b<-xts(c(4.5,7,3.3), order.by=as.POSIXct(c('2013-07-26 0:00', 
                                           '2013-07-26 2:00', 
                                           '2013-07-26 3:00')))
approx(b, n=13)   ,

调整n适当的时间间隔?

答案 1 :(得分:1)

xts个包中,您可以na.approxna.spline

  1. 将时间序列强制转换为xts对象
  2. 创建一个间隔为15分钟的新索引
  3. 使用此新索引创建与对象合并的NULL xts对象
  4. 使用na.approx表示线性/常数近似值或na.spline表示多项式1的近似缺失值。
  5. 这里有一个完整的例子:

    library(xts)
    set.seed(21)
    ## you create the xts object
    x <- xts(rnorm(10),
             seq(from=as.POSIXct(Sys.Date()),
                 length.out=10,
                 by=as.difftime(1,units='hours')))
    ## new index to be used 
    new.index <- 
      seq(min(index(x)),max(index(x)), by=as.difftime(15,units='mins'))
    ## linear approx
    na.approx(merge(x,xts(NULL,new.index)))
    ## polynomial approx
    na.spline(merge(x,xts(NULL,new.index)))