R 中是否有比 difftime 函数更快的替代方法?
Is there a faster alternative to difftime function in R?
我有一个包含大约 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>
差别不大,但大约是平均值的两倍。
我有一个包含大约 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>
差别不大,但大约是平均值的两倍。