時間の入ったデータを分析するときに気をつけなくてはいけないことがあります。それはタイムゾーンです。
例えば、CSVなどのデータにタイムゾーンのオフセット情報(標準時UTC、もしくはイギリスの時間からどれだけの時差があるか)が以下のように入っていたとします。
タイムゾーン情報が入っているデータの場合
time |
---|
2018-05-09T13:10:00-08:00 |
2018-05-10T12:00:00-08:00 |
2018-05-15T09:30:00-08:00 |
すると、データをインポートした際、8時間のオフセットが計算された上で標準時の表記であるUTC(グリニッジ標準時と同じ)というタイムゾーンで以下のように表示されます。
ところが、多くのデータはこのタイムゾーンのオフセット情報が以下のように入っていなかったりします。
タイムゾーンの情報がない場合
time |
---|
2018-05-09T13:10:00 |
2018-05-10T12:00:00 |
2018-05-15T09:30:00 |
このデータをインポートすると、そのままUTCだという仮定で、UTC時間として認識されます。
しかし、世の中のExploratoryユーザーの全てがイギリスかそれと同じタイムゾーンのに住んでいるわけではないので、これでは困ります。
ちなみに、Exploratory (正確にはRですが)では、日付と時間の入っている列のデータタイプはPOSIXctとなります。最後の”ct"の部分は、Calendar Timeの略です。もし、データが日付しか含んでいない場合はDateというデータタイプが用意されています。
もし、データタイプがPOSIXctではなく、characterとなっている場合は、列ヘッダーメニューから、簡単に変換することができます。
タイムゾーンの認識に失敗して、時間が間違って変換されていることはたしかに問題ですが、実はそれ以上にやっかいなのが、見ているデータがそもそもどのタイムゾーンで認識されているのかがわかりにくいことがよくあります。
Exploratoryではテーブル・ビューでPOSIXctデータタイプの列の値は、タイムゾーンもいっしょに表示されます。
一度、データがどのタイムゾーンをベースにしているのかが分かれば、変換したり修正したりするのは比較的簡単です。
それでは、それぞれ、変換と修正についてみてみましょう。
多くの場合、時間データはUTCではなく、自分の住んでる場所のタイムゾーン、例えば日本であればJST(Japan Standard Time)というタイムゾーンでの表示の方がわかりやすいでしょう。その場合、列ヘッダー・メニューから簡単にできます。
変換したい列の列ヘッダーメニューから、
タイムゾーン -> 表示するタイムゾーンを変換
を選びます。
「計算の作成」ダイアログが開き、with_tz
という関数が生成されているのを確認できます。
関数の中のtzoneという引数に出てくるドロップダウンリストから自分が表示したいタイムゾーンを選びます。日本であればJapanを選びます。
「実行」ボタンをクリックすると、選択されたタイムゾーンに変換された時間が表示されます。この場合は、日本時間での設定となっています。
ちなみにこちらが変換前です。
最初に述べたように、タイムゾーンの情報が入っていない場合は時間が勝手にUTCとして認識されてしまいっています。例えば、09:00という時間が、自分は日本時間で朝の9時だと思っていても、システムはUTCで朝の9時だと認識してしまうことになり、これは日本時間にすると午後6時ということになってしまいます。
そこで、この09:00を正しくJSTとして修正する必要が生じます。
その場合は、修正したい列の列ヘッダー・メニューから、
タイムゾーン -> データのタイムゾーンを修正
を選びます。
「計算の作成」ダイアログが開き、force_tz
という関数が生成されているのを確認できます。
force_tz
関数内のtzone
という引数のドロップダウンリストから適したタイムゾーンを選びます。日本の場合はJapanになります。
実行すると、データの時間の部分は変わりませんが、タイムゾーンの部分がJSTとなります。
ちなみにこちらが修正前です。
以上、Exploratoryの中でのタイムゾーンの表示、および変換と修正に関して簡単に紹介してみました。他にも質問などありましたら、support@exploratory.io までお気軽にご相談ください。