いよいよ最終回!上手にデータをまとめてみよう
本連載もいよいよ今回で最終回となりました。無骨なコンソール画面……。そろそろ慣れていただけけましたでしょうか?
さてさて、大量にあるデータをまとめて俯瞰したいと思ったことはありませんか? 例えば、似ている人や似ている広告をまとめてグループを作りたい! みたいな。
上手にデータをまとめることができれば、それぞれのグループの特徴を簡単に把握することができます。今回、ご紹介する分析は下記イメージとなります。つまり行方向で集約するものです。
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_1.png)
ちなみに、大量にある変数を列方向で集約する手法もあります(因子分析、主成分分析などなど)。
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_2.png)
但し! 上記のままのデータの持ち方では分析手法が適用できないため、今回は「ダミー変数」という、とっても役立つデータについても解説していきます。男性/女性といったそのままでは扱いの難しい名義変数/カテゴリカルデータ(前回記事)も分析の対象にできる優れものです。
名前は胡散臭い感がありますが、使い勝手の良いイケテルヤツです。
しかも!
Rは「パッケージ」を活用することで、この「ダミー変数」をサックリ作成できます。これ本当に便利です。是非、皆さんと共有していきたいと思います。
さらに今回は少し欲張って単位が違っていたり、平均が異なっているデータを扱う時に必須の処理「基準化/標準化」についても触れていきます。
ダミー変数って何やねん……?
さて、まずは今回のサンプルデータですが前回と同様コチラを使います。
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_3.png)
Rの中でこれらのデータがどう扱われているのかまず確認してみましょう。例のごとくRにデータを読み込みます。
sample1<-read.csv("c:/data/CV_data.csv")
R上で各変数がどのように扱われているかを確認します。
str(sample1)
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_4.png)
順に見ていきましょう。ID、CV、AGE、SEX、ADという変数名が並んでいますね。問題は次です。int? Factor?……
intは前回の量的変数であることを示しています。Factorは質的変数/カテゴリカルデータです。後ろのw/ 2 の数値は下記の通りとなっています。
- yes、no →2 levels
- Male、Female →2 levels
- Mail、Listing、DSP →3 levels
※この場合のlevelsは「水準」なんて言ったりします。
つまり含まれる質的変数の種類(=水準数)を表していますね。
さてさて、R上でそれぞれの変数がどう認識されているかが確認できました。が! このままのデータの持ち方では今回の分析手法を適用できないのです。でも、こんな格好のデータを、、、
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_5.png)
こんな風にできると質的変数も量的変数として扱うことができるようになります(ドヤッ
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_6.png)
これら0,1のデータをダミー変数と呼びます。データ分析におけるお作法みたいなものなので、覚えていると役立ちますよ!
でも扱う変数の数が巨大になってくると、水準数ごとにダミー変数を作成するのもなかなか大変な作業になっちゃいます。
そこで! ここで役に立つパッケージがこちらです。
- caret
- ggplot2
このパッケージは予測モデルを構築する際に役立つモデルやデータを簡単に選択できる機能が含まれています。また、前回までにご紹介したggplot2も合わせて読み込みます。
早速、第4回でご紹介したように同パッケージをインストールしましょう。
これで使用可能になります。
library(caret)
library(ggplot2)
以下の2行のおまじないで、あっという間に質的変数/カテゴリカルデータをダミー変数に加工できます!
tmp <- dummyVars(~., data=sample1)
sample1.dummy <- as.data.frame(predict(tmp, sample1))
補足
- 1行目dummyVarsの"~." ……このニョロニョロの後ろの "."(ピリオド) は、全ての質的変数を対象とすることを意味します。
- data=sample1……対象とするデータはsample1ですよ!の意味です。
- 2行目は1行目で作成したtmpを使って、sample1の質的変数をダミー変数に変換して、sample1.dummyに格納します。
意図通り加工できているか確認しましょう。
head(sample1.dummy)
![](https://mz-cdn.shoeisha.jp/static/images/article/20790/20790_7.png)
見事に先ほどstr(sample1) でFactor(=質的変数)と確認した変数が[0,1]のダミー変数に変換されていますね!
簡単! 2015年2月10日「3つ」覚えて分析から視覚化まで即実践!Rでできるデータ分析講座開催
Rをインストールしたが、無骨なUIに「今日はこのへんで……」と、そっと閉じてしまった方にオススメです!
本講座では実機を使って「できるだけわかりやすく」グラフ化&データ分析をワークショップ形式で簡単に身に付けることができます。