2016-11-04 76 views
0

我有一個大約120,000行的時間序列數據集,我將其存儲爲一個數據框。大部分數據的間隔時間爲15分鐘,但也有一些月度數據。我只想保留15分鐘的數據並按月間隔排除數據。因此,我正在計算連續時間戳之間的差異,然後消除不等於15分鐘(900秒)的所有內容。 我的時間戳列名是'datetime'。我使用以下來計算時間間隔 -在R中有更快的替代difftime函數嗎?

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

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

不是一個巨大的差別,但關於兩個均值的一個因素。

+0

謝謝!它比以前更好用。 –

+0

很高興知道。隨時更新或接受。 –