カテゴリデータを含むデータセット、例えばアンケートなど「頻度・率」に注目するデータや重回帰分析などに適合するデータ作成に大変便利なパッケージの紹介です。ダミー変数が簡単に作成できます。
パッケージ内容を確認するまで、「カテゴリデータを数量化するパッケージは既に存在しているし、最悪コマンド処理で可能では」と疑問を持ちました。でも、何事も体験するまで判断してはいけません。「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)))
#構成を確認
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
#内容を確認
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
########
#データからダミー変数を作成:makedummiesコマンド
#因子の最初のlevelを含む除外:basal_levelオプション;TRUE:含む,FALSE:除外
#FALSEで重回帰分析などに適合するデータ作成に便利です
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
#処理する列のデータを表示:colオプション
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をfactor classで処理しない:numericオプション
#例ではオリジナルのデータが表示されます
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
#例えばデータ例にfactor classデータを追加して処理
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
少しでも、あなたの解析が楽になりますように!!