普段は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を引く必要がある。
コメント