Knowledge As Practice

JAIST(東京)で Transformative Service Research に取り組んでる社会人大学院生の研究・勉強メモ

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冊が勉強なりました。

カテゴリカルデータ解析 (Rで学ぶデータサイエンス 1)

カテゴリカルデータ解析 (Rで学ぶデータサイエンス 1)

人文・社会科学のためのカテゴリカル・データ解析入門

人文・社会科学のためのカテゴリカル・データ解析入門

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。