通过mutate在dplyr中创建多个因子列的优雅方法

时间:2017-11-03 19:20:15

标签: r dplyr

鉴于以下内容

group
0
1
2
3
4
5
6
7
8
9
10

创建新列level以使数据看起来如下

的优雅方法是什么
group  level
0       none
1       low
2       low
3       low
4       med
5       med
6       med
7       high
8       high
9       high
10      very_high

我目前的解决方案是输入mutate中的每个值。有没有更好的办法?

2 个答案:

答案 0 :(得分:1)

您可以使用cut

df$level <- cut(df$group, breaks = c(0,1,4,7,10,Inf), right = F, labels = c('none', 'low', 'med', 'high', 'very_high'))

df
#   group     level
#1      0      none
#2      1       low
#3      2       low
#4      3       low
#5      4       med
#6      5       med
#7      6       med
#8      7      high
#9      8      high
#10     9      high
#11    10 very_high

答案 1 :(得分:1)

df$level =factor(as.character(ceiling(df$group/3)),labels = c('none', 'low', 'med', 'high', 'very_high'))
df
   group     level
1      0      none
2      1       low
3      2       low
4      3       low
5      4       med
6      5       med
7      6       med
8      7      high
9      8      high
10     9      high
11    10 very_high