Calc(LibreOffice)で日時データを日付、時間(時や分)に分離する手順

・何をしたいのか?

日時データ(例 : 2017/11/6 8:10)が含まれるデータファイルの解析で、日付や時間を分離しておきたい。
例えば、以下に気象庁のサイトからダウンロードしてきた東京の最近1ヶ月の毎時気温データがあります。
ここから毎日の10時のときの気温だけを抜き出したい場合に、日付と時間が一つのセルに一緒に入っていると扱いが面倒。そこで表計算ソフトの機能を使って、セルの中の日付データを分離したいというわけです。
データとしてはここに示した気象庁からダウンロードしてきたものに限らず、日時を扱う場合に汎用的に使える方法を示していきます。
使用する表計算ソフトはLibreOfficeのCalcです。

・手順としては2つ

日時を分離する方法は2つあります(もっとあるかも知れないけれど今回はこの2つ)。
1つ目は特定の記号でデータを分離する方法。
2つ目は関数で欲しいデータのみを抜き出す方法。

・手順1 記号で識別して分離する方法

とりあえずサンプルデータとして次の日時データを用います。
  • 2017/11/6 8:10:00
 これをセルの書式設定で調べると、以下の書式コードとなっています。
さてこのデータを分離していくわけですが、Calcの機能としては「テキストから列へ(X)…」を用います。メニューバーの「データ(D)」を開くと見つけられます。
 クリックすると以下のウィンドウが開きます。
ここで「区切りのオプション」を指定することで、任意の記号でデータを分離していくことが出来ます。ここでは日付(201711/6)と時刻(8:10)を分離するため、スペースで区切るよう指定しています。
分離すると以下の画像のようにB列に日付、C列に時刻に分かれます。B列の日付に0:00と時刻がくっついてきてしまっていますが、これは書式設定で時刻を含まないように指定しましょう。
 ここまでで整理すると以下の画像のようになります。
次にC列の時刻の分離をしていきます。手順としては先ほどと同様。時刻の入っているセルを選択して「テキストから列へ(X)…」を用います。
さっきは区切りオプションはスペースで分離しましたが、時刻はコロン「:」でそれぞれ分離出来るので、それを指定します。区切りオプションに「その他」の項目があるのでチェックして右隣の空欄に「:」を入れます。
そうすると以下のようにC列に時、D列に分、E列に秒として分離されます。
日付の方も同じ手順で分離することが出来ます。もし分離しておかしな数字が出てしまった場合は、セルの書式設定を疑ってください。分離後は日付ではなく数として扱われるので、書式設定もそれに合わせる必要があります。

この方法の注意点としては、分離する場合に右隣のセルに他のデータが入っている場合は、分離後のデータで上書きされてしまうという問題があります。一応それを注意する表示は出るので、この方法で分離するときは必要なだけ列を増やしておきましょう。

・手順2 関数で分離する方法

手順1はデータの種類によらず、区切り文字があればそれで分離出来ます。しかしデータが日時に決まっているなら、それを抜き出す関数を使用することでも分離出来ます。手順2ではその方法について解説していきます。

日時データについては「シリアル値」というものを扱っていくことになります。本格的に扱うのは面倒なので、とりあえずそういう値を扱っているとだけ覚えておけばいいと思います。シリアル値は表計算ソフト内部での扱いとなるため、通常の書式設定では見ないことの方が多いです。もし日時データの扱いでおかしな結果になってしまったら、そのシリアル値の扱いが適切かどうかを疑って見てください。

さてCalcの日時データを扱う関数は多々あります。関数ウィザードで「日付と時刻」を指定して眺めておいてください。

実際の方法の解説をしていきます。まず以下のデータを用いて処理していきます。すでに日付と時刻が分離されていますが、1つのセルに一緒でも方法は同じです。
ここでは時刻の分離を行っていきます。日付データから「何時」というのを抜き出すには「HOUR関数」を使用します。
同様に「何分」は「MINUTE関数」、「何秒」は「SECOND関数」を使用します。
そうして関数で処理すると以下のような結果になります。
08:10:00が8、10、0に分離出来ています。

手順1とは異なり関数を使用する場合はセルに元データを残しておけます。個人的にはこの手順2の方がどんな処理をしているのか把握しやすいので好みです。 データの後利用も考えると、元データが残っていた方がいいですし。

・まとめ

手順1は日付データに限らずいろいろなデータに利用できます。
手順2は関数で扱えるデータに限定されますが、使いこなせればかなり便利になるでしょう。


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

gnuplot : グラフにグリッド線を描く方法(set grid)