【问题标题】:Is there a faster alternative to difftime function in R?R中的difftime函数是否有更快的替代方法?
【发布时间】:2017-03-18 20:20:44
【问题描述】:

我有一个包含大约 120,000 行的时间序列数据集,我将其存储为数据框。大多数数据以 15 分钟为间隔,但也有一些月度数据。我想只保留 15 分钟的数据并按月消除数据。所以我正在计算连续时间戳之间的差异,然后消除不等于 15 分钟(900 秒)的所有内容。 我的时间戳列名称是“日期时间”。我正在使用以下方法来计算时间间隔-

site_data[1:nrow(site_data)-1,"Interval"] <- as.numeric(difftime(site_data[2:nrow(site_data),"DateTime"],
                                                                 site_data[1:nrow(site_data)-1,"DateTime"]))

但此代码运行时间过长。有没有比 difftime 更快的替代方法?时间戳列是 POSIXct 类型的日期时间。谢谢。

【问题讨论】:

    标签: r posixct difftime


    【解决方案1】:

    只需使用diff(as.numeric(timeCol)):

    R> library(microbenchmark)
    R> times <- Sys.time() + 1:1e5
    R> microbenchmark(diff(times), diff(as.numeric(times)))
    Unit: microseconds
                        expr      min      lq    mean  median      uq     max neval cld
                 diff(times) 1653.999 2153.82 8871.00 2407.66 5313.88 41223.4   100   b
     diff(as.numeric(times))  774.058 1215.35 3910.26 1456.82 1846.53 35622.2   100  a 
    R> 
    

    差别不大,但平均值大约是两倍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-19
      • 2017-07-19
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多