2016-11-04 7 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> 

ない大きな違いが、平均で2倍程度。

+0

ありがとうございます!以前よりもうまく機能します。 –

+0

お役立ち情報お気軽に更新してください。 –

関連する問題