如何在R数据框中基于其他变量的条件创建一个包含二元变量的列?


有时我们需要创建额外的变量来添加有关现有数据的更多信息,因为它增加了价值。这在进行特征工程时尤其常用。如果我们了解到某些因素可能会影响我们的响应,那么我们更倾向于将其作为变量添加到数据中,因此我们利用现有数据来创建它。例如,根据其他变量应用条件来创建另一个变量,例如,如果频率匹配某个标准,则创建表示好坏的二元变量。

示例

考虑以下数据框:

 在线演示

set.seed(100)
Group<-rep(c("A","B","C","D","E"),times=4)
Frequency<-sample(20:30,20,replace=TRUE)
df1<-data.frame(Group,Frequency)
df1

输出

 Group Frequency
1  A    29
2  B    26
3  C    25
4  D    22
5  E    28
6  A    29
7  B    26
8  C    25
9  D    25
10 E    23
11 A    26
12 B    25
13 C    21
14 D    26
15 E    26
16 A    26
17 B    30
18 C    27
19 D    21
20 E    22

创建一个名为“类别”的列,包含“好”和“坏”两个级别,其中“好”表示频率大于25。

示例

df1$Category<-ifelse(df1$Frequency>25,"Good","Bad")
df1

输出

 Group Frequency Category
1  A       29       Good
2  B       26       Good
3  C       25       Bad
4  D       22       Bad
5  E       28       Good
6  A       29       Good
7  B       26       Good
8  C       25       Bad
9  D       25       Bad
10 E       23       Bad
11 A       26       Good
12 B       25       Bad
13 C       21       Bad
14 D       26       Good
15 E       26       Good
16 A       26       Good
17 B       30       Good
18 C       27       Good
19 D       21       Bad
20 E       22       Bad

让我们来看另一个例子:

示例

 在线演示

Class<-rep(c("Lower","Middle","Upper Middle","Higher"),times=5)
Ratings<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Ratings)
df2

输出

     Class    Ratings
1    Lower       3
2    Middle      8
3 Upper Middle   2
4    Higher      9
5    Lower       2
6    Middle      3
7 Upper Middle   4
8    Higher      4
9    Lower       4
10   Middle      5
11 Upper Middle  7
12    Higher     9
13    Lower      4
14    Middle     2
15 Upper Middle  6
16    Higher     7
17    Lower      1
18    Middle     6
19 Upper Middle  9
20    Higher     9

示例

df2$Group<-ifelse(df2$Ratings>5,"Royal","Standard")
df2

输出

      Class    Ratings    Group
1    Lower       3       Standard
2    Middle      8         Royal
3 Upper Middle   2       Standard
4    Higher      9         Royal
5    Lower       2       Standard
6    Middle      3       Standard
7 Upper Middle   4       Standard
8    Higher      4       Standard
9    Lower       4       Standard
10   Middle      5       Standard
11 Upper Middle  7         Royal
12    Higher     9         Royal
13    Lower      4       Standard
14    Middle     2       Standard
15 Upper Middle  6         Royal
16    Higher     7         Royal
17    Lower      1       Standard
18    Middle     6         Royal
19 Upper Middle  9         Royal
20    Higher     9         Royal

更新于:2020年9月9日

8K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告