奥村先生が,名古屋市の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. わからない
を一桁の数字で入力するだろ
また,いずれでもない,わからない などの項目も設けていないと,無回答なのか,該当しないのか,単に回答し忘れたのかなどすら区別できない
統計学以前,統計調査票(アンケート調査票)の作り方を知らない素人がやった調査なのか?