Rでダミー変数をつくる。makedummies 関数で。
●2015年12月28日 追記
makedummies 関数の作者の方から、コメントで情報をいただきました。
以下のように、 install_github
で
簡単に makedummies が使えるようになっています。
## devtools がなければインストール→ install.packages("devtools") library(devtools) install_github("toshi-ara/makedummies")
●2016年1月3日 追記
makedummies がさらに便利になりました。詳細は↓です。
http://hikaru1122.hatenadiary.jp/entry/2015/12/30/213032
以上、追記おわり。
今回のモチベーション
最近、ずっとカテゴリカルデータをいじっていて、ダミー変数を作る機会が出てきました。Rでダミー変数を作るのには、パッケージがあったはずだと思い、調べていたら、こちらの2つがみつかりました。
dummyVars についてはこちら。
estrellita.hatenablog.com
dummy.data.frame についてはこちら。
qiita.com
makedummies 関数
ただ、これらはダミー変数を作るときに基準となる変数もそのまま作ります。なので、基準となる変数のダミーはいりません。勝手に基準となるダミーを作らない関数がないかと探ししたところ、ありました。
それがこちらの makedummies 関数です。
github.com
作ってくださった方に感謝です。データフレームしか受け付けないので、その点だけ注意すればダミー変数が簡単につくれます。github のソースをコピーして、適当なファイルに保存して、適当なフォルダに入れておきます。今回は、makedummies.R というファイルにして、getwd()
で表示されるフォルダに入れています。
source("makedummies.R") > d <- read.delim("clipboard") > str(d) 'data.frame': 18 obs. of 2 variables: $ y: int 5 7 4 6 6 6 6 6 7 5 ... $ x: int 1 2 3 1 2 3 1 2 3 1 ... > head(d) y x 1 5 1 2 7 2 3 4 3 4 6 1 5 6 2 6 6 3
x のダミー変数を作りたいと思います。x が2のときに「1」となるダミー、x が3のときに「1」となるダミーを作ります。1は基準なのでダミーはいりません。ダミー変数としたいものは、因子型である必要があるので、因子型に直します。
> d$x <- factor(d$x) > str(d) 'data.frame': 18 obs. of 2 variables: $ y: int 5 7 4 6 6 6 6 6 7 5 ... $ x: Factor w/ 3 levels "1","2","3": 1 2 3 1 2 3 1 2 3 1 ...
順序付きのカテゴリカル変数でもOKです。あとは makedummies 関数に入れるだけ。自動的に変数名がつきます。無事、基準となる変数はダミーが作られていません。ちなみに、複数の因子型変数がある場合、全部ダミー変数を作ります。
> d2 <- makedummies(d) > head(d2) y x_2 x_3 1 5 0 0 2 7 1 0 3 4 0 1 4 6 0 0 5 6 1 0 6 6 0 1
私には重宝する関数です。改めて感謝。
ちなみに、カテゴリカルデータの分析はこちらの2冊が勉強なりました。
- 作者: 藤井良宜,金明哲
- 出版社/メーカー: 共立出版
- 発売日: 2010/04/22
- メディア: 単行本
- クリック: 13回
- この商品を含むブログ (3件) を見る
- 作者: 太郎丸博
- 出版社/メーカー: ナカニシヤ出版
- 発売日: 2005/07
- メディア: 単行本
- 購入: 1人 クリック: 26回
- この商品を含むブログ (12件) を見る