Rで解析:ダミー変数の作成に大変便利です「makedummies」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

カテゴリデータを含むデータセット、例えばアンケートなど「頻度・率」に注目するデータや重回帰分析などに適合するデータ作成に大変便利なパッケージの紹介です。ダミー変数が簡単に作成できます。

パッケージ内容を確認するまで、「カテゴリデータを数量化するパッケージは既に存在しているし、最悪コマンド処理で可能では」と疑問を持ちました。でも、何事も体験するまで判断してはいけません。「makedummies」パッケージ、非常に便利です。

パッケージ管理者のToshiaki Araさんのホームページで記述されているようパッケージの開発には、群馬大学の青木先生が公開されているmake.dummyを参考にされたようです。

青木先生のmake.dummy
http://aoki2.si.gunma-u.ac.jp/R/qt3.html

Toshiaki Araさんのホームページ
http://arat.xyz/wordpress/?p=160

パッケージバージョンは1.2.1。実行コマンドはwindows 11のR version 4.1.2で動作を確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("makedummies")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("makedummies")

###データ例の作成#####
#参加者3名,質問が3つ,選択内容が4つの回答で構成されるアンケートデータを想定
#回答データをfactor classにするのがポイント
TestData <- data.frame(ID = rep(1:3, times = 3),
                       Question = rep(1:3, each = 3),
                       Result = factor(sample(1:4, 9, replace = TRUE)))

#&#27083;&#25104;&#12434;&#30906;&#35469;
str(TestData)
'data.frame':	9 obs. of  3 variables:
$ ID      : int  1 2 3 1 2 3 1 2 3
$ Question: int  1 1 1 2 2 2 3 3 3
$ Result  : Factor w/ 3 levels "2","3","4": 1 2 1 2 3 1 3 1 1

#&#20869;&#23481;&#12434;&#30906;&#35469;
TestData
ID Question Result
1  1        1      2
2  2        1      3
3  3        1      2
4  1        2      3
5  2        2      4
6  3        2      2
7  1        3      4
8  2        3      2
9  3        3      2
########

#&#12487;&#12540;&#12479;&#12363;&#12425;&#12480;&#12511;&#12540;&#22793;&#25968;&#12434;&#20316;&#25104;:makedummies&#12467;&#12510;&#12531;&#12489;
#&#22240;&#23376;&#12398;&#26368;&#21021;&#12398;level&#12434;&#21547;&#12416;&#38500;&#22806;:basal_level&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE:&#21547;&#12416;,FALSE:&#38500;&#22806;
#FALSE&#12391;&#37325;&#22238;&#24112;&#20998;&#26512;&#12394;&#12393;&#12395;&#36969;&#21512;&#12377;&#12427;&#12487;&#12540;&#12479;&#20316;&#25104;&#12395;&#20415;&#21033;&#12391;&#12377;
makedummies(TestData, basal_level = TRUE)
  ID Question Result_2 Result_3 Result_4
1  1        1        1        0        0
2  2        1        0        1        0
3  3        1        1        0        0
4  1        2        0        1        0
5  2        2        0        0        1
6  3        2        1        0        0
7  1        3        0        0        1
8  2        3        1        0        0
9  3        3        1        0        0

#&#20966;&#29702;&#12377;&#12427;&#21015;&#12398;&#12487;&#12540;&#12479;&#12434;&#34920;&#31034;:col&#12458;&#12503;&#12471;&#12519;&#12531;
makedummies(TestData, basal_level = TRUE, col = "Result")
  Result_2 Result_3 Result_4
1        1        0        0
2        0        1        0
3        1        0        0
4        0        1        0
5        0        0        1
6        1        0        0
7        0        0        1
8        1        0        0
9        1        0        0

#factor class&#12434;factor class&#12391;&#20966;&#29702;&#12375;&#12394;&#12356;:numeric&#12458;&#12503;&#12471;&#12519;&#12531;
#&#20363;&#12391;&#12399;&#12458;&#12522;&#12472;&#12490;&#12523;&#12398;&#12487;&#12540;&#12479;&#12364;&#34920;&#31034;&#12373;&#12428;&#12414;&#12377;
makedummies(TestData, basal_level = TRUE, numeric = "Result")
  ID Question Result
1  1        1      1
2  2        1      2
3  3        1      1
4  1        2      2
5  2        2      3
6  3        2      1
7  1        3      3
8  2        3      1
9  3        3      1

#&#20363;&#12360;&#12400;&#12487;&#12540;&#12479;&#20363;&#12395;factor class&#12487;&#12540;&#12479;&#12434;&#36861;&#21152;&#12375;&#12390;&#20966;&#29702;
TestData2 <- cbind(TestData, Result2 = TestData[, 3])
makedummies(TestData2, basal_level = TRUE, numeric = "Result")
  ID Question Result Result2_2 Result2_3 Result2_4
1  1        1      1         1         0         0
2  2        1      2         0         1         0
3  3        1      1         1         0         0
4  1        2      2         0         1         0
5  2        2      3         0         0         1
6  3        2      1         1         0         0
7  1        3      3         0         0         1
8  2        3      1         1         0         0
9  3        3      1         1         0         0

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました