【R】dataframeの時刻変換(型変換)を高速で行う方法

R

普段はas.POSIXctを使用しているが、こいつがマジで遅い。高速で処理するにはfasttimeを使う。

install.packages("fasttime")

100万行単位のdataframeで検証してみる。

as.POSTXctの場合⇒1min46sec

> start_time <- proc.time()
> df$JIKOKU <- as.POSIXct(df$JIKOKU)
> elapsed_time <- proc.time() - start_time
> cat("elapsed_time: ", trunc(elapsed_time[3]/60), "min", trunc(elapsed_time[3]%%60), "sec\n")
elapsed_time:  1 min 46 sec

fastPOSIXctの場合⇒30sec

> start_time <- proc.time()
> df$JIKOKU <- fastPOSIXct(df$JIKOKU)
> elapsed_time <- proc.time() - start_time
> cat("elapsed_time: ", trunc(elapsed_time[3]/60), "min", trunc(elapsed_time[3]%%60), "sec\n")
elapsed_time:  0 min 30 sec

雲泥の差。 ただし、 fasttime は変換元の文字列はGMTにしか対応していないので,JSTなら9*3600を引く必要がある。

コメント