如何在R中按prestige变量的数值区间生成取值1-6的level新列
R语言prestige变量分箱生成level列解决方案
以下提供两种常用实现方案,假设你的数据集名为df:
方法1:base R原生cut()函数实现(代码最简洁)
# 生成分组因子列 df$level <- cut(df$prestige, breaks = c(-1,10,20,30,40,50,60), labels = 1:6, right = TRUE) # 若需要level为数值类型,补充转换逻辑即可 df$level <- as.numeric(as.character(df$level))
参数说明:
- 断点设置配合
right=TRUE可以保证10归入第一组、11归入第二组,完全匹配你给出的区间规则 labels参数直接对应输出的1-6等级,无需额外映射
方法2:dplyr包case_when()实现(规则可读性更强)
library(dplyr) df <- df %>% mutate(level = case_when( prestige >= 0 & prestige <= 10 ~ 1, prestige >= 11 & prestige <= 20 ~ 2, prestige >= 21 & prestige <= 30 ~ 3, prestige >= 31 & prestige <= 40 ~ 4, prestige >= 41 & prestige <= 50 ~ 5, prestige >= 51 & prestige <= 60 ~ 6 ))
说明:这种写法完全对应你列出的区间规则,后续调整划分规则时修改对应条件即可。如果prestige存在小于0或大于60的异常值,case_when()会默认返回NA,你可以根据需求补充异常值的赋值逻辑。
内容的提问来源于stack exchange,提问作者zonin
相关产品推荐
相关产品推荐

