【问题标题】:Spline interpolation for values for time时间值的样条插值
【发布时间】:2016-06-03 08:41:10
【问题描述】:

一列包含时间和日期值,另一列包含速度值,我想插入任意给定时间的速度值,如下所示,但出现错误。

这是数据集。

 startTimestamp        avg_Speed
 2016-04-11 00:01:07   74.45
 2016-04-11 00:05:10   73.58
 2016-04-11 00:06:09   89.90 

我想在“00:03:11”处插入速度值,我只是使用样条函数,

newspeed <- splinefun(k$startTimestamp, k$avg_Speed, method = "monoH.FC")
newspeed("00:03:11")

这是我得到的错误。

if (extrapol == "linear" && any(iXtra

一些附加信息:class(f$startTimestamp) = "POSIXct" "POSIXt"

【问题讨论】:

    标签: r time-series interpolation spline


    【解决方案1】:

    我认为将类更改为数字(分钟)会很容易解决您的问题。

    # making data (you needn't)
    k <- data.frame(startTimestamp = c("2016-04-11 00:01:07", "2016-04-11 00:05:10", "2016-04-11 00:06:09"),
                    avg_Speed = c(74.45, 73.58, 89.90))
    k[,1] <- as.POSIXct(k[,1], "GMT")
    
    # changing class ( POSIXct -> difftime -> numeric )
    zero_time <- as.POSIXct("2016-04-11 00:00:00", "GMT") # using your time zone
    k$difftime <- as.numeric(difftime(k$startTimestamp, zero_time))
    class(k$difftime)  ## "numeric" (min)
    
    # interpolate
    newspeed <- splinefun(k$difftime, k$avg_Speed, method = "monoH.FC")
    newspeed( 3 + 11/60 )   # or newspeed( as.numeric(as.difftime("00:03:11")) )
              ## results [1] 69.66494
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多