簡體   English   中英

在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> 

差異不大,但均值約為兩倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM