根据2个因素创建虚拟变量并粘贴到新数据帧

时间:2015-07-01 21:05:40

标签: r loops dummy-variable

我发送所有数据,以便您自己重现

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

然而,这是我真正想要的矩阵。

最终的Matrix应该有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

0 个答案:

没有答案