如何将dplyr mutate cut生成的分箱重命名为1-10
分箱区间转1-10数字的简便方法
方法1:直接转换因子为整数
cut()函数生成的是有序因子,其底层存储的整数正好对应分箱的顺序(第一个区间对应1,第二个对应2,依此类推),直接用as.integer()转换即可:
# 一步完成分箱并转换为1-10的整数 df <- df %>% mutate(decile = as.integer(cut(metric, breaks=10)))
方法2:在cut中直接指定labels参数
如果想在分箱时直接生成带1-10标签的结果,可设置labels参数:
# 生成因子类型的1-10标签 df <- df %>% mutate(decile = cut(metric, breaks=10, labels = 1:10)) # 若需要整数类型,再加一步转换 df <- df %>% mutate(decile = as.integer(cut(metric, breaks=10, labels = 1:10)))
这两种方法都不需要处理字符串替换,利用R因子的特性就能快速实现需求,比转字符再替换高效得多。
内容的提问来源于stack exchange,提问作者Sanna
相关产品推荐
相关产品推荐

