アンケートみたいなデータだと
解答した番号 | |
students1 | 1,2,3 |
students2 | 4,5,6,7 |
students3 | 1,2,4,5 |
みたいな形になってて、そのままクロス表を作れないということが結構ある*1。バイナリデータにしないといけないんだけど、それのためのコードをRで書いてみた。
> students <- c("1,2,3","4,5,6,7","1,2,4,5") > students.table <- matrix(0,3,7,byrow=T) > students.table [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 0 0 0 0 0 0 0 [2,] 0 0 0 0 0 0 0 [3,] 0 0 0 0 0 0 0 > row.names(students.table) <- c("students1","students2","students3") > colnames(students.table) <- c("1","2","3","4","5","6","7") > for(i in 1:length(students)){ + for(j in 1:length(strsplit(students,split=",")[[i]])){ + num <- strsplit(students,split=",")[[i]][j] + students.table[i,num] <-1 + } + } > students.table 1 2 3 4 5 6 7 students1 1 1 1 0 0 0 0 students2 0 0 0 1 1 1 1 students3 1 1 0 1 1 0 0
まあ、strsplitが使ってみたかっただけという話もある。
*1:入力が人間の場合、こういう形にしといたほうがやりやすいからね。