在R中是否有更快的替代difftime功能?

时间:2016-11-04 21:46:12

标签: r posixct difftime

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

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类型的日期时间。谢谢。

1 个答案:

答案 0 :(得分:2)

只需使用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> 

没有太大差异,但平均值只有两倍。