タイムゾーンのサポート

時間の入ったデータを分析するのはけっこうややこしくなってしまうことがあります。それは、タイムゾーンを考慮する必要が出てくるからです。

例えば、データにタイムゾーンのオフセット(標準時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時間として表示されます。

しかし、これを呼んでいるほとんどの方が、イギリスかそれといっしょのタイムゾーンの場所に住んでいることはないと思いますので、これは問題です。

CharacterデータをPOSIXct (Date/Time)に変換する

ちなみに、Exploratory (正確にはRですが)では、日付と時間の入っている列のデータタイプはPOSIXctとなります。最後の”ct“の部分は、Calendar Timeの略です。もし、データが日付しか含んでいない場合はDateというデータタイプが用意されています。

もし、データタイプがPOSIXctではなく、characterとなっている場合は、列ヘッダーメニューから、簡単に変換することができます。

タイムゾーンの表示

タイムゾーンの認識に失敗して、時間が間違って変換されていることはたしかに問題ですが、実はそれ以上にやっかいなのが、見ているデータがそもそもどのタイムゾーンで認識されているのかがわかりにくいことがよくあります。これは、標準時(UTC)での時間なのか、日本時間での時間なのかといった具合です。

そこで、Exploratoryではv5.0より、テーブル・ビューでPOSIXctのデータタイプの列を表示する際に、データに使われているタイムゾーンを表示するようになっています。

一度、データがどのタイムゾーンをベースにしているのかが分かれば、変換したり修正したりするのは比較的簡単です。

それでは、それぞれ、変換と修正についてみてみましょう。

タイムゾーンの変換

多くの場合、時間データはUTCではなく、自分の住んでる場所のタイムゾーン、例えば日本であればJST(Japan Standard Time)というタイムゾーンでの表示の方がわかりやすいでしょう。その場合、Exploratoryの中ではRの’with_tz’という関数を使って変換することができますが、 これは列ヘッダー・メニューから簡単にアクセスできます。

変換したい列の列ヘッダーメニューから、

データを置換 / 変換 / 埋める -> タイムゾーンを変換

を選びます。

生成された関数の中のtzoneという引数に出てくるリストから自分が表示したいと思うタイムゾーンを選びます。日本であれば、Japanを選びます。

すると、選択されたタイムゾーンに変換された時間が表示されます。この場合は、日本時間での設定となっています。

ちなみにこちらが変換前です。

タイムゾーンを修正する

最初に述べたように、タイムゾーンの情報が入っていない場合は時間が勝手にUTCとして認識されてしまいっています。例えば、09:00という時間が、自分は日本時間で朝の9時だと思っていても、システムはUTCで朝の9時だと認識してしまうことになり、これは日本時間にすると午後6時ということになってしまいます。

そこで、この09:00を正しくJSTとして修正する必要が生じます。この場合は、Exploratoryの中ではRの’force_tz’という関数を使って修正することができますが、これは列ヘッダー・メニューから簡単にアクセスできます。

修正したい列の列ヘッダー・メニューから、

データを置換 / 変換 / 埋める -> タイムゾーンを修正

を選びます。

生成されたforce_tzという関数のなかのtzoneという引数に出てくるリストから正しいタイムゾーンを選びます。日本の場合はJapanになります。

実行すると、この場合は、データの時間の部分は変わりませんが、タイムゾーンの部分がJSTとなります。

ちなみにこちらが修正前です。


以上、Exploratoryの中でのタイムゾーンの表示、および変換と修正に関して簡単に紹介してみました。他にも質問などありましたら、support@exploratory.io までお気軽にご相談ください。