裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ダミー変数をカテゴリー変数に変換

2016年07月03日 | ブログラミング

奥村先生が,名古屋市のHPVVのデータの解析をしている

kaito = read.csv("kaito.csv", header=FALSE, colClasses="character", fileEncoding="UTF-8")
dim(kaito)
birth = ifelse(rowSums(kaito[,5:11]=="1") != 1, NA,
  ifelse(kaito[,5]=="1", 6,
  ifelse(kaito[,6]=="1", 7,
  ifelse(kaito[,7]=="1", 8,
  ifelse(kaito[,8]=="1", 9,
  ifelse(kaito[,9]=="1", 10,
  ifelse(kaito[,10]=="1", 11,
  ifelse(kaito[,11]=="1", 12, NA))))))))
table(birth, useNA="ifany")

birth はご本人も「もっとエレガントな方法があるだろうが,面倒なので…」と書いてあるが,簡単なので以下のように

birth2 = as.matrix(kaito[,5:11] == 1) %*% 6:12
birth2 = ifelse(birth2 < 6 | birth2 > 12, NA, birth2)
table(birth2, useNA="ifany")

kaito[,5:11] == 1 は,元のデータを colClasses="character" で読んだので,必要悪
掛けるベクトルの選択には注意(6:12 なら問題なし)
数値で読んでいればそのまま行列掛算
無視すべき(NA にすべき)データは,ifelse(birth2 < 6 | birth2 > 12, NA, birth2) で処理

それにしても,ダミー変数展開をそのままデータ入力するとは非効率甚だしい

---------

質問:以下の項目で当てはまるものにチェックしてください

□ Aです □ Bです □ Cです □ Dです ✓ Eです □ Fです □ Gです

0, 0, 0, 1, 0, 0, 0 って入力したのか...バカ

普通は

質問:以下の項目で当てはまる番号に○をつけてください

1. Aです 2. Bです 3. Cです 4. Dです 5. Eです 6. Fです 7. Gです 8. いずれでもない 9. わからない

一桁の数字で入力するだろ

また,いずれでもない,わからない などの項目も設けていないと,無回答なのか,該当しないのか,単に回答し忘れたのかなどすら区別できない

統計学以前,統計調査票(アンケート調査票)の作り方を知らない素人がやった調査なのか?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村