ggplot2のバージョンを上げたら棒グラフの書き方が変わっていた

はじめに

Rによるデータマイニング入門

Rによるデータマイニング入門

最近読んでいるこの本、そんなに厚くはないんですが基本的な分析手法が一通り網羅されています。
また、dplyrやggplot2など比較的新しいけど最近のRには必須とも言うべきパッケージが使われており、サンプルコードを動かしながらRでどんなことができるのかを知るには良い本なんじゃないかな、と思っています。

ggplot2パッケージのバージョンを上げたらサンプルコードの一部が動かなくなった

ggplot2パッケージは2015/12/15にver2.0.0がリリースされましたが、それを使ってサンプルコードを実行すると、棒グラフ描画の部分がエラーになるようになってしまいました。
具体的にはchapter15.Rの38行目以降の

# 日別の集計

tw.daily <- tw.df %>%
  mutate(twdate=as.Date(created)) %>%
  group_by(twdate) %>% summarize(cnt = n())
tw.daily
qplot(twdate, cnt, data=tw.daily, geom="bar", stat="identity")

を実行すると

> qplot(twdate, cnt, data=tw.daily, geom="bar", stat="identity")
Error: stat_count() must not be used with a y aesthetic.
In addition: Warning message:
`stat` is deprecated

と表示されます。

どうやら集計した値をy軸に指定して棒グラフを描くのは止めて、qplot関数の集計機能を使えということのようです。

なので上記コードは

# 日別の集計
qplot(as.Date(created), data=tw.df, geom="bar", xlab="twdate", ylab="cnt")

とすれば動くようになります。

f:id:Prunus1350:20151230214707p:plain

同様に、52行目以降の時間別集計の部分は

# 時間別の集計

tw.hourly <- tw.df %>%
  mutate(twhour=as.POSIXct(format(created, "%Y-%m-%d %H:00:00"))) %>%
  group_by(twhour) %>% summarize(cnt = n())
tw.hourly
qplot(twhour, cnt, data=tw.hourly, geom="bar", stat="identity")

を、

# 時間別の集計

library(lubridate)
qplot(floor_date(created, "hour"), data=tw.df, geom="bar", xlab="twhour", ylab="cnt")

とすれば大丈夫です。

f:id:Prunus1350:20151230214711p:plain