Rで作図!②時系列データを扱うにはPOSIXctを使え!!

時系列データをplotで作図しようと思ったら、エラーが起きたことありませんか?
原因はRがデータをただの文字と認識していることかもしれません。
結論、その問題はPOSIXctを使えば解決できます。
この記事では、POSIXctでどのようにしてデータを時系列として認識させるのかを解説していきます。

実際に2020年に8月17日静岡県浜松について気温グラフの作図を目指します。(日本の最高気温らしいです)
まず失敗例をのせています。早くやり方を知りたい方は3.POSIXctで時系列データに変換!!に飛んでください!

目次

  1. 失敗例
  2. 読み込めない原因はClassでわかる
  3. POSIXctで時系列データに変換!!
    1. POSIXctの使い方
    2. seqの使い方
    3. 時系列データを作る
  4. 時系列データのグラフを作成

1.失敗例

今回、データは気象庁のHPからお借りします。

エクセルにコピペして0時10分から24時までの気温のデータにしました。

これをコピーしてRに読み込ませます。data_hamaに格納させます。読み込ませ方について知りたい方はここで確認してみてください。

では、気温の時間変化を可視化するためにplotで散布図を作ってみます。
イメージは、縦軸気温、横軸時刻と言う感じです。
plot(横軸データ,縦軸データ)で上記のイメージの散布図ができます。今回横軸データ(時刻)はdata_hama[,1]、縦軸データ(気温)はdata_hama[,2]です。
plot(data_hama[,1],data_hama[,2])と入力し、実行します。すると、下図のようにエラーがでました。

どうしてこのようなエラーが出たのでしょうか。

2.読み込めない原因はclassでわかる

ここで、時刻データ(data_hama[,1])に着目して、Rがこれをどう認識しているのか調べてみます。
class(data_saga[,1])と入力すれば、データ型を調べられます。すると下図のようにcharacter型となりました。

このように、時刻データがcharacter型つまり文字として認識されているため、作図ができなかったと思われます。
これを解決するため、次項ではデータを時刻として認識させましょう。

3.POSIXctで時系列データに変換!!

POSIXctとseqで時系列データにします。

3.1.POSIXctの使い方

2020-8-17 12:00という文字列を考えます。このままではただの文字で、Rは時刻データとして認識してくれません。
例えば、time<-"2020-8-17 12:00"として、timeのクラスを調べると、characterとなります。
そこで、POSIXctを使います。POSIXctで日付や時刻に変換できます。
time<-as.POSIXct("2020-8-17 12:00")として、timeのクラスを調べると、POSIXct関数となり、時刻データとして認識されました。

3.2.seqの使い方

seqは繰り返しのものを作成します。seq(最初のもの,最後のもの,繰り返しの周期)という使い方をします。
例えば、seq(1,10)とすれば、1,2,3,4,5,6,7,8,9,10という結果が返されます。
また、seq(1,20,2)とすれば、1,3,5,7,9,11,13,15,17,19という結果が返されます。

3.3.時系列データを作る

以上のことを踏まえて時刻データを生成しましょう。
浜松のデータの最初は2020-8-17 00:10です。一方、最後は2020-8-18 00:00です。
また、今回は10分間隔のデータが欲しいです。そこで、繰り返しの周期はby="10 mins"と表します。
では、data_hama[,1]に以上のことを踏まえた時刻データを代入します。
data_hama[,1]<-seq(as.POSIXct("2020-8-17 00:10"),as.POSIXct("2020-8-18 00:00"),by="10 mins")
これでdata_hama[,1]に8-17 00:10から8-18 00:00までの10分刻みの時刻データを生成できました。

4.時系列データのグラフを作成

先ほど作った時系列データをx軸、気温データをy軸として散布図

を作ります。
plot(data_hama[,1],data_hama[,2])
と入力すると、作りたいグラフを作ることができました!

まとめ

時刻データをRに読み込ませてグラフにする方法を以上にまとめました。

時刻に関しては、自分で作ってしまうのがてっとり早いと思います。

是非参考にしてみてください。

 

*補足

POSIXctの他に、時間に関する技として、POSIXltがあります。これも同様に使えます!

これらの違いや使い方、他の時間の扱い方についてはbiostatistics様の「時系列データ|Rで時系列データを取り扱う方法」を見ると便利です。

 

SNSでもご購読できます。

コメント

コメントを残す

*