Interpolating timeseries

后端 未结 2 628
醉话见心
醉话见心 2020-12-01 09:42

I have a time series problem which I hope someone can help with!

The problem revolves around two sets of data with different time stamps. One set of data contains ca

相关标签:
2条回答
  • 2020-12-01 10:09

    I would use zoo (or xts) and do it like this:

    library(zoo)
    # Create zoo objects
    zc <- zoo(calib$value, calib$time)    # low freq
    zs <- zoo(sample$value, sample$time)  # high freq
    # Merge series into one object
    z <- merge(zs,zc)
    # Interpolate calibration data (na.spline could also be used)
    z$zc <- na.approx(z$zc, rule=2)
    # Only keep index values from sample data
    Z <- z[index(zs),]
    Z
    #                      zs       zc
    # 2012-10-25 01:00:52 256 252.3000
    # 2012-10-25 01:03:02 254 251.1142
    # 2012-10-25 01:05:23 255 249.9617
    # 2012-10-25 01:07:42 257 252.7707
    # 2012-10-25 01:10:12 256 255.6000
    
    0 讨论(0)
  • 2020-12-01 10:18

    You can also use approx function like this and it will be much easier. Just make sure that you are working with data frames. Also, make sure that format of the column in calibration and sample data-set are the same by using as.POSIXct.

     calib <- data.frame(calib); sample <- data.frame(sample)
    
     IPcal <- data.frame(approx(calib$time,calib$value, xout = sample$time, 
                     rule = 2, method = "linear", ties = mean))
    
     head(IPcal)
    
    #                x        y
    #1 2017-03-22 01:00:52 252.3000
    #2 2017-03-22 01:03:02 251.1142
    #3 2017-03-22 01:05:23 249.9617
    #4 2017-03-22 01:07:42 252.7707
    #5 2017-03-22 01:10:12 255.6000
    

    Read more about approx on approxfun documentation.

    0 讨论(0)
提交回复
热议问题