自分で再現できるようにすべてのデータを送信します
example2<- as.data.frame(c("A", "A", "B", "B", "B", "G", "G", "E", "E", "F"))
example3<- as.data.frame(c("1", "2", "1", "5", "4", "1", "2", "3", "1", "4"))
example4<-data.frame(example2,example3)
names(example4)<-c("NIT","Esp")
example4
NIT Esp
1 A 1
2 A 2
3 B 1
4 B 5
5 B 4
6 G 1
7 G 2
8 E 3
9 E 1
10 F 4
私はこの 10 x 2 行列を持っています。NIT と Esp はどちらも因子変数です。
各文字は件名であり、各数字は特定の件名の特徴です。例: 被験者 A は特性 1 と 2 を持ち、被験者 B は特性 1、5、4、
特性 1,2,3,4,5 ごとにダミー変数を作成したいと思います。A が特性 2 を持っている場合は 1 を生成し、そうでない場合は 0 を生成します。
私はこの解決策を試しました
for(level in unique(example4$Esp)){
example4[paste("dummy", level, sep = "_")] <- ifelse(example4$Esp == level, 1, 0)
}
これまでのところ、これは私が管理したものです
NIT Esp dummy_1 dummy_2 dummy_5 dummy_4 dummy_3
1 A 1 1 0 0 0 0
2 A 2 0 1 0 0 0
3 B 1 1 0 0 0 0
4 B 5 0 0 1 0 0
5 B 4 0 0 0 1 0
6 G 1 1 0 0 0 0
7 G 2 0 1 0 0 0
8 E 3 0 0 0 0 1
9 E 1 1 0 0 0 0
10 F 4 0 0 0 1 0
それにもかかわらず、これは私が本当に欲しいマトリックスです。
最終的なマトリックスは 6 行 x 5 列で、次のようになります。
NIT Esp1 Esp2 Esp3 Esp4 Esp5
A 1 1 0 0 0
B 1 0 0 1 1
G 1 1 0 0 0
E 1 0 1 0 0
F 0 0 0 1 0