始める無料で始める

fasttime で高速にパースする

fasttime パッケージには、ISO 8601 形式の日時を読み込むために設計された fastPOSIXct() という関数が1つ用意されています。読み込む形式が1種類で、推測の必要がないため、とても高速です。

この演習では、その速さを体感するために、Auckland の時間別気象データ(17,000件超の日時)を読み込む際の速度を、lubridateymd_hms() と比較します。

実行時間の比較には、同名パッケージの microbenchmark() 関数を使います。計測したい式を、引数としていくつでも渡すことができます。

この演習はコースの一部です

Rで扱う日付と時刻

コースを見る

演習の手順

Auckland の時間別データから取り出した日時を、文字列としてベクトル dates に読み込み済みです。

  • dates の構造を確認し、文字列であり ISO 8601 形式になっていることを確かめてください。
  • fasttimedates をパースし、str() にパイプして fastPOSIXct が正しくパースできていることを確認してください。
  • 次に計測を比較するため、microbenchmark を呼び出し、最初の引数で ymd_hms() による dates のパース、2つ目の引数で fastPOSIXct() によるパースを指定してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

library(microbenchmark)
library(fasttime)

# Examine structure of dates
str(___)

# Use fastPOSIXct() to parse dates
fastPOSIXct(___) %>% str()

# Compare speed of fastPOSIXct() to ymd_hms()
microbenchmark(
  ymd_hms = ___(dates),
  fasttime = ___(dates),
  times = 20)
コードを編集して実行