カテゴリデータを含むデータセット、例えばアンケートなど「頻度・率」に注目するデータや重回帰分析などに適合するデータ作成に大変便利なパッケージの紹介です。ダミー変数が簡単に作成できます。
パッケージ内容を確認するまで、「カテゴリデータを数量化するパッケージは既に存在しているし、最悪コマンド処理で可能では」と疑問を持ちました。でも、何事も体験するまで判断してはいけません。「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
少しでも、あなたの解析が楽になりますように!!