2014年10月13日月曜日

Kobe.R #10 xts 時系列の簡単操作

Kobe.R #10を開催しました。
URL: http://kobexr.doorkeeper.jp/events/15060
日時: 2014/10/4 Sat. 10:00-12:00
場所: 三ノ宮駅周辺

Kobe.Rは関西で毎月定期的に開催している、統計用プログラミング言語 R の勉強会です。最初の発表「dplyr & xts を使った時系列データの簡単集計」についてご紹介します。

xtsは時系列データの操作に便利

株価や売上のような時系列データには、日付や時刻が記録されています。このようなデータから特定の期間を抽出したい、もしくは、月ごと、週ごとの集計を求めたいという時に便利なパッケージが xts eXtensible Time Series です。

データフレームをxts型に変換する

まず、データフレーム型のデータをxts型のデータに変換します。 例えばこんなデータフレームがあるとします。

> head(data)
              time user_id item_code price
1 2013/11/14 19:39       0       s93  2000
2 2013/11/4  22:39       0      s191  1001
3 2013/11/5  13:15       0       s63  2300
4 2013/11/5  13:15       0        35     0
5 2013/11/6   0:20       0      s001  2800
6 2013/11/6  17:37       0    s80001  2300




このデータをxts型に変換します。

> library(xts)
> data.xts <- as.xts(read.zoo(data))

パイプ演算子を使ってこのようにも書けます。

> library(xts)
> library(pipeR)
> data.xts <- data %>>% read.zoo() %>>% as.xts()


こうしてxts型に変換しておくと、こんな操作ができるようになります。


期間を指定してデータを抽出する


data.xts['2013-05-01::2013-05-08']
data.xts['2013-05']
data.xts['2013-05::']


期間を指定して集計

例えば週別の合計を求めてみましょう。

> weekly <- apply.weekly(data.xts$price, sum)
> head(weekly)
            price 
2013-04-07 704402
2013-04-14 246364
2013-04-21 306163
2013-04-28 246358
2013-05-05 582423
2013-05-12 780918

他にもapply.daily、apply.monthlyで日別、月別の集計ができます。

0 件のコメント:

コメントを投稿