reshape2で5秒くらいはまった
Rでピボットテーブルを実現するためのreshape2パッケージについてはid:a_bickyさんの素晴らしい解説資料がある。
http://www.slideshare.net/abicky/r-10128090/
これを読んで、ヒャッハアアアアアアアという感じでクロス集計をかけまくろうとしたわけです。
library(reshape2) tips.m <- melt(tips, id.vars = c("sex", "smoker", "day", "time"), measure.vars = c("total_bill", "tip")) dcast(tips.m, sex + day~smoker, sum, subset = .(variable == "tip"))
するとこんなメッセージが出る。
以下にエラー cast(data, formula, fun.aggregate, ..., subset = subset, fill = fill, :
関数 "." を見つけることができませんでした
はて?と思いhelpを見ると.関数を使うにはplyrパッケージが必要と書かれている。
library(plyr) # needed to access . function
acast(aqm, variable ~ month, mean, subset = .(variable == "ozone"))
なるほど。あらためて、plyrパッケージも読み込んで集計をかけると
library(reshape2) library(plyr) tips.m <- melt(tips, id.vars = c("sex", "smoker", "day", "time"), measure.vars = c("total_bill", "tip")) dcast(tips.m, sex + day~smoker, sum, subset = .(variable == "tip"))
下記のような結果が出てヒャッハアアアアアアアアア!!!!!!!!
sex day No Yes 1 Female Fri 6.25 18.78 2 Female Sat 35.42 43.03 3 Female Sun 46.61 14.00 4 Female Thur 61.49 20.93 5 Male Fri 5.00 21.93 6 Male Sat 104.21 77.74 7 Male Sun 133.96 52.82 8 Male Thur 58.83 30.58