r - R 中是否有比 difftime 函数更快的替代方法?

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

最佳答案

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

差异并不大,但大约是平均值的两倍。

关于r - R 中是否有比 difftime 函数更快的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432164/

相关文章:

r - 如何从日期时间创建日期(使用 lubridate)?

r - 具有 NA 的两行之间的时间差

r - 如何根据时间戳列制作时间跨度列?

r - 扫描数据类型错误

r - ggplot : Showing x-axis line for each facet plot

R - 如何将空的 POSIXct 列添加到已存在的 data.frame/tibble 中?

R 使用时间字符串创建 XTS 对象

r - difftime 与来自其他列的先前非 NA 值

r - 有什么解决方法可以找到基于 R 中的相关矩阵过滤原始特征的最佳阈值吗?

javascript - Shiny 的 slider 按月输入