岐阜でアクセス解析に興味があればご連絡ください。岐阜を中心にITコンサルティングを行っています。

Rで年度ごとに集計したテーブルデータを作成する

R言語でデータを集計したりする時に、年度単位で集計したかったりしませんか。

意外とそのような方法がなかったので、ここの掲載しておきます。(今回は休日のポストなので、Webマーケティングとは関係ない内容です。)

 

テストデータの作成

まず、テストデータを作成します。今回は、日経平均株価のデータを使います。取得方法は、基本的に以下のページを参考にしています。ほとんどこの記事に書いてある通りにやれば良いと思いますが、僕の環境(Mac)では、ダウンロードしたファイルがそのままだと文字コードエラーになってしまったので、ヘッダーを適当にアルファベットに編集しています。

【R言語】日次データオブジェクトに、曜日列を挿入する – Qiita

一応、ソースコードを掲載しておきますね。

これで、2013年から2016年までの、日次の株価に関するデータを用意できました。

 

年と月で集計する

作成したテストデータから、年と月のマトリックスで集計したデータを作成します。具体的なステップとしては、今の日付のデータから、「年」と「月」をそれぞれ抽出し、それを掛け合わせるようにテーブルデータを作成します。

これでテーブルは、以下の通りになります。各年における東証が開かれた日数がカウントされました。

10月 11月 12月 1月 2月 3月 4月 5月 6月 7月 8月 9月
2013 22 20 20 19 19 20 21 21 20 22 22 19
2014 22 18 21 19 19 20 21 20 21 22 21 20
2015 21 19 21 19 19 22 21 18 22 22 21 19
2016 0 0 0 19 20 22 20 19 22 1 0 0

今回は、これを年度のデータにしたいので、変換します。また、列も10月から始まっていて変な風になっているので、これも修正したいですね。

 

年度の算出

年度ごとに分類するためには、「境目となる月より過ぎていれば1を足す」という処理をしてあげます。

以上で、やっと出来上がりです。これを出力すると、以下のようになります。テストデータは2013年1月からなので、2012年度開始でちゃんと出力されていますね。

4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月
2012 0 0 0 0 0 0 0 0 0 19 19 20
2013 21 21 20 22 22 19 22 20 20 19 19 20
2014 21 20 21 22 21 20 22 18 21 19 19 22
2015 21 18 22 22 21 19 21 19 21 19 20 22
2016 20 19 22 1 0 0 0 0 0 0 0 0

 

これらの処理は、以下のサイトを参考にさせていただきました。

r – Assigning Dates to Fiscal Year – Stack Overflow

R:データフレームの列を入れ替える・削除する。 – Qiita