すぐ忘れるのでひとまずメモ。

データ分析にアソシエーション分析(バスケット分析)っていうのがある。Rを使ってやるんですが、これをやるとき、元ネタデータの整形をどうするかいっつも忘れるので特筆。

基本的には↓感じのデータを使う想定。

1課	2課	3課	4課	5課	6課	7課	8課	9課
1	1	1	0	0	0	0	0	0
0	0	0	1	1	0	0	0	0
0	0	0	0	0	1	1	1	1

で、これをRのアソシエーション分析(arules)で使う場合、最終的に↓の感じに変換する。

1課,2課,3課
4課,5課
6課,7課,8課,9課

こんな感じのデータをトランザクションデータというらしい。

Rでこれをやる場合、トランザクションデータをそのまま読む場合は↓の感じ。

hoge.tran <- read.transactions("test.csv",sep=",",format="basket")

トランザクションデータの場合はこのままaruleに食わせられる。

hoge.ar <- apriori(hoge.tran)
inspect(hoge.ar)

↓のタイプのデータを読む場合は

1課	2課	3課	4課	5課	6課	7課	8課	9課
1	1	1	0	0	0	0	0	0
0	0	0	1	1	0	0	0	0
0	0	0	0	0	1	1	1	1

R上は↓の感じで読む

#CSVから読み込み
hoge <- read.table("test.csv",header=TRUE,sep=",",row.names=1)
#行列に変換
hoge.mat <- as(hoge,"matrix")
#トランザクションに変換
hoge.tran <- as (hoge.mat,"transactions")
#あとは一緒
hoge.ar <- apriori(hoge.tran)
inspect(hoge.ar)

データフレームからは直で変換できないっぽいので行列に一回変換する。

まー結局、Rに食わせる用のデータ形式を色々準備しないとね。基本的にはアンケートの選択肢とか、商品のマスタとかマスタを全部横に並べて、0か1のON・OFFデータを作るのが一番楽かな。

数値系のデータは値の範囲でコード化してON/OFFのデータを作らないとダメかしらね。