如何在 R 中创建虚拟变量?


虚拟变量是一种变量,如果虚拟变量被创建的值存在于数据框架中,则该值变为 1,否则变为 0。因此,如果数据框架中有一个二元变量,则其将有两个虚拟变量。要创建虚拟变量,我们可以使用 model.matrix 函数,如以下示例所示。

考虑以下数据框架 −

示例

 实战

Temp<-sample(c("Hot","Cold"),20,replace=TRUE)
df1<-data.frame(Temp)
df1

输出

   Temp
1  Cold
2  Hot
3  Cold
4  Cold
5  Hot
6  Hot
7  Hot
8  Cold
9  Hot
10 Hot
11 Cold
12 Hot
13 Cold
14 Cold
15 Hot
16 Hot
17 Hot
18 Hot
19 Cold
20 Hot

在 df1 中创建 Temp 的虚拟变量 −

示例

model.matrix(~Temp-1,data=df1)

输出

  TempCold TempHot
1  1         0
2  0         1
3  1         0
4  1         0
5  0         1
6  0         1
7  0         1
8  1         0
9  0         1
10 0         1
11 1         0
12 0         1
13 1         0
14 1         0
15 0         1
16 0         1
17 0         1
18 0         1
19 1         0
20 0         1

attr(,"assign")

[1] 1 1
attr(,"contrasts")
attr(,"contrasts")$Temp
[1] "contr.treatment"

示例

 实战

Group<-sample(c("A","B","C"),20,replace=TRUE)
df2<-data.frame(Group)
df2

输出

   Group
1  B
2  C
3  B
4  A
5  A
6  C
7  C
8  C
9  C
10 A
11 B
12 A
13 A
14 C
15 B
16 B
17 C
18 A
19 C
20 A

在 df2 中创建 Group 的虚拟变量 −

示例

model.matrix(~Group-1,data=df2)

输出

  GroupA GroupB GroupC
1   0     1      0
2   0     0      1
3   0     1      0
4   1     0      0
5   1     0      0
6   0     0      1
7   0     0      1
8   0     0      1
9   0     0      1
10  1     0      0
11  0     1      0
12  1     0      0
13  1     0      0
14  0     0      1
15  0     1      0
16  0     1      0
17  0     0      1
18  1     0      0
19  0     0      1
20  1     0      0

attr(,"assign")

[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$Group
[1] "contr.treatment"

更新日期: 2021 年 2 月 10 日

976 次观看

开启你的 职业

通过完成课程获得认证

开始使用
广告
© . All rights reserved.