在R数据框中基于条件将数值列转换为二进制因子


为了在R数据框中基于条件将数值列转换为二进制因子,我们可以结合使用factor函数和ifelse函数。

例如,如果我们有一个名为df的数据框,其中包含一个数值列,例如Num,并且我们想将其转换为二进制因子(如果Num小于100则为Minor,否则为Major),那么我们可以使用以下命令:

df$Num_Factor<-factor(ifelse(df$Num_Factor<100,"Minor","Major"))

示例1

以下代码片段创建了一个示例数据框:

x<-sample(1:50,20)
df1<-data.frame(x)
df1

创建了以下数据框:

   x
 1 4
 2 13
 3 50
 4 19
 5 43
 6 42
 7 18
 8 17
 9 27
10 23
11 31
12 37
13 5
14 28
15 1
16 6
17 30
18 35
19 22
20 10

要在上面创建的数据框中将x转换为因子列,请将以下代码添加到上面的代码片段中:

x<-sample(1:50,20)
df1<-data.frame(x)
df1$x_Factor<-factor(ifelse(df1$x<25,"Low","High"))
df1

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

    x x_Factor
 1  4  Low
 2 13 Low
 3 50 High
 4 19 Low
 5 43 High
 6 42 High
 7 18 Low
 8 17 Low
 9 27 High
10 23 Low
11 31 High
12 37 High
13 5  Low
14 28 High
15 1  Low
16 6  Low
17 30 High
18 35 High
19 22 Low
20 10 Low

示例2

以下代码片段创建了一个示例数据框:

y<-round(rnorm(20,1,0.25),1)
df2<-data.frame(y)
df2

创建了以下数据框:

    y
 1 1.4
 2 0.9
 3 1.0
 4 0.6
 5 1.1
 6 0.7
 7 0.9
 8 1.2
 9 0.8
10 1.1
11 0.7
12 0.4
13 1.1
14 0.8
15 1.1
16 0.7
17 1.7
18 0.8
19 1.1
20 0.6

要在上面创建的数据框中将y转换为因子列,请将以下代码添加到上面的代码片段中:

y<-round(rnorm(20,1,0.25),1)
df2<-data.frame(y)
df2$y_Factor<-factor(ifelse(df2$y<1,"Rejected","Accepted"))
df2

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

    y  y_Factor
 1 1.4 Accepted
 2 0.9 Rejected
 3 1.0 Accepted
 4 0.6 Rejected
 5 1.1 Accepted
 6 0.7 Rejected
 7 0.9 Rejected
 8 1.2 Accepted
 9 0.8 Rejected
10 1.1 Accepted
11 0.7 Rejected
12 0.4 Rejected
13 1.1 Accepted
14 0.8 Rejected
15 1.1 Accepted
16 0.7 Rejected
17 1.7 Accepted
18 0.8 Rejected
19 1.1 Accepted
20 0.6 Rejected

更新于:2021年11月10日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告