如何用tidyverse的mutate为DataFrame新增薪资分组列?
用tidyverse给薪资数据分组的实现方法
要给DataFrame新增薪资分组列,直接用mutate()配合case_when()就能搞定,这是tidyverse里处理多条件分支的常用组合。
基础实现代码
假设你的数据框叫salary_df,薪资列是数值型的salary,代码如下:
library(tidyverse) salary_df <- salary_df %>% mutate( salary_group = case_when( salary < 4000 ~ "<$4000", salary >= 4000 & salary <= 6000 ~ "$4000至$6000", salary > 6000 ~ ">$6000", TRUE ~ NA_character_ # 处理缺失值或异常值 ) )
关键说明
case_when()会按顺序判断条件,第一个符合的条件就会返回对应的分组标签,条件顺序不要随意调换- 最后一行
TRUE ~ NA_character_是兜底逻辑,如果薪资是缺失值(NA)或者其他不符合上述条件的情况,会返回NA,避免出现无匹配的结果
处理带$符号的薪资列
如果你的薪资列是带$的字符型(比如"$3500"),得先把它转换成数值型再分组:
salary_df <- salary_df %>% mutate( # 去掉$符号并转成数值 salary = as.numeric(str_remove(salary, "\\$")), salary_group = case_when( salary < 4000 ~ "<$4000", salary >= 4000 & salary <= 6000 ~ "$4000至$6000", salary > 6000 ~ ">$6000", TRUE ~ NA_character_ ) )
内容的提问来源于stack exchange,提问作者Ai Robot
相关产品推荐
相关产品推荐

