Rで解析:日付けや時間データの取り扱いに便利です。「chron」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

データ解析では時系列データを取り扱うことがあります。日付け・時間データ用のクラスとして”DATA”や”POSIXlt”,”POSIXct”がありますが、以外と操作が手間です。そんな手間を軽減するパッケージを紹介します。直感的に日付けや時間データを操作できるのでオススメです。

パッケージバージョンは2.3-58。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("chron")

実行コマンドの紹介

詳細はコメントを確認してください。

#パッケージの読み込み
library("chron")

#日付けデータの配列を作成:seq.datesコマンド
#seq.dates(from = 開始日, to = 終了日, by = 繰り返し基準, length = 配列の長さ)
#byオプション:"days", "weeks", "months", "years"の設定が可能
seq.dates("01/01/2015", "06/20/2015", by = "months")
[1] 01/01/15 02/01/15 03/01/15 04/01/15 05/01/15 06/01/15

#lengthオプション:長さを指定して作成
seq.dates("01/01/2015", by = "months", length = 15)
[1] 01/01/15 02/01/15 03/01/15 04/01/15 05/01/15 06/01/15 07/01/15 08/01/15 09/01/15 10/01/15 11/01/15
[12] 12/01/15 01/01/16 02/01/16 03/01/16

#日付けデータに変換:datesコマンド
#変換することで加算・加減ができます
dates("01/06/2015")
[1] 01/06/15

dates("01/06/2015") + 365
[1] 01/06/16

dates("01/06/2015") - 365
[1] 01/06/14

#日付けデータの間隔を計算:cut.datesコマンド
#factorで結果が計算されます
#cut(x = データ, breaks = 整形方法, start.on.monday = TRUE)
#breaksオプション:"days", "weeks", "months", "year"の設定が可能
TestData <- seq.dates("01/01/2015", "06/20/2015", by = "months")

#&#26085;&#12391;&#35336;&#31639;
cut(TestData, "days")
[1] day 1   day 32  day 60  day 91  day 121 day 152
Levels: day 1 < day 2 < ... < day 152

#&#26376;&#12391;&#35336;&#31639;
cut(TestData, "months")
[1] Jan 15 Feb 15 Mar 15 Apr 15 May 15 Jun 15
Levels: Jan 15 < Feb 15 < Mar 15 < Apr 15 < May 15 < Jun 15

#1970&#24180;1&#26376;1&#26085;&#12363;&#12425;&#25351;&#23450;&#12375;&#12383;&#26085;&#12414;&#12391;&#12398;&#38291;&#38548;&#12434;&#35336;&#31639;:julian&#12467;&#12510;&#12531;&#12489;
julian(06, 20, 2015)
[1] 16606

#julian&#12467;&#12510;&#12531;&#12489;&#12391;&#21462;&#24471;&#12375;&#12383;&#20516;&#12363;&#12425;&#26376;&#26085;&#24180;&#12434;&#21462;&#24471;:month.day.year&#12467;&#12510;&#12531;&#12489;
#&#32080;&#26524;&#12399;list&#12391;&#20986;&#21147;&#12373;&#12428;&#12414;&#12377;
month.day.year(1)
$month
[1] 1
$day
[1] 2
$year
[1] 1970

#&#25968;&#20516;&#12398;&#23567;&#25968;&#28857;&#12434;&#20999;&#12426;&#25448;&#12390;,units&#12391;&#25351;&#23450;&#12375;&#12383;&#24418;&#24335;&#12408;&#22793;&#25563;
#units&#12458;&#12503;&#12471;&#12519;&#12531;:"days", "hours", "minutes", "seconds"&#12364;&#21487;&#33021;&#12391;&#12377;
DHM <- dates("07/01/78") + trunc(sample(1100.8886:2000.3335, 150, replace = TRUE), "days")

#&#26085;&#12398;&#20986;&#29694;&#25968;&#12434;&#12503;&#12525;&#12483;&#12488;
#plot(days(DHM), col = "#4b61ba")

#&#26332;&#26085;&#12398;&#20986;&#29694;&#25968;&#12434;&#12503;&#12525;&#12483;&#12488;
plot(weekdays(DHM), col = "#4b61ba")

#&#26376;&#12398;&#20986;&#29694;&#25968;&#12434;&#12503;&#12525;&#12483;&#12488;
#plot(months(DHM), col = "#4b61ba")

出力例

・曜日の出現数をプロット

MonthPlot

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました