You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将Work_Titles列47种职位分组映射至emp_class

R实现职位分类与后续统计操作方案

步骤1:完成职位名称到emp_class的映射

推荐两种新手易操作的实现方式:

方式1:使用dplyr的case_when函数(规则直观易维护)

# 先加载依赖包
library(dplyr)
# 假设你的原始数据表命名为df
df <- df %>%
  mutate(emp_class = case_when(
    # 按你的规则逐条写匹配逻辑
    Work_Titles %in% c("VP Human Resources", "VP Finance", "CEO") ~ "Executive_Titles",
    Work_Titles %in% c("Meats Manager", "Stores Manager", "Produce Manager") ~ "cl_managers",
    # 剩余40余种职位按上述格式补全匹配规则即可
    .default = "Other" # 未匹配到的职位统一归为其他类,避免出现空值
  ))

方式2:使用命名向量映射(规则量大时代码更简洁)

# 先构建职位到分类的映射向量
title_map <- c(
  "VP Human Resources" = "Executive_Titles",
  "VP Finance" = "Executive_Titles",
  "CEO" = "Executive_Titles",
  "Meats Manager" = "cl_managers",
  "Stores Manager" = "cl_managers",
  "Produce Manager" = "cl_managers"
  # 补全剩余所有职位的映射关系
)
# 直接批量赋值分类
df$emp_class <- title_map[df$Work_Titles]
# 处理未匹配到的空值
df$emp_class[is.na(df$emp_class)] <- "Other"

步骤2:为各emp_class设置统一薪资标准

# 方法1:直接用case_when赋值
df <- df %>%
  mutate(standard_salary = case_when(
    emp_class == "Executive_Titles" ~ 250000, # 替换为你实际设定的薪资数值
    emp_class == "cl_managers" ~ 120000,
    emp_class == "Other" ~ 70000
  ))

# 方法2:如果分类多可以单独做薪资映射表,用左连接匹配,后续改薪资更方便
salary_rule <- data.frame(
  emp_class = c("Executive_Titles", "cl_managers", "Other"),
  standard_salary = c(250000, 120000, 70000)
)
df <- left_join(df, salary_rule, by = "emp_class")

步骤3:统计各分类的离职次数

假设你的数据表中terminations字段取值为1代表离职、0代表在职:

# 分组统计方法,输出结果为结构化数据表
term_stats <- df %>%
  group_by(emp_class) %>%
  summarise(termination_count = sum(terminations, na.rm = TRUE)) # na.rm=TRUE可忽略空值避免计算错误

# 基础R快速统计方法
term_count_table <- table(df$emp_class, df$terminations)[, "1"]

注意事项

  • 做映射前先执行unique(df$Work_Titles)导出全部47种职位名称,对照着写规则避免遗漏
  • 映射完成后执行table(df$emp_class, useNA = "ifany")检查是否存在空值,确认所有职位都完成分类

内容的提问来源于stack exchange,提问作者Hansaka Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:15:07