在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
广告