如何在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"

猜你喜欢