[英]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>
差異不大,但均值約為兩倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.