如何用R合并JobRole列中Admin与Administrative变量并计算均值?
解决方法
要实现合并JobRole中Admin和Administrative为Administrative2,同时统计各角色在现任经理手下的平均任职年限,你需要先统一JobRole的取值,再进行分组汇总。修改后的代码如下:
avg_yrs <- barplot_data %>% # 统一JobRole的取值,合并目标类别 mutate(JobRole = case_when( JobRole %in% c("Admin", "Administrative") ~ "Administrative2", TRUE ~ JobRole # 保留其他原有角色 )) %>% group_by(Gender, JobRole, Department) %>% summarise( averageyrs = mean(YearsWithCurrManager, na.rm = TRUE), .groups = "drop" # 取消分组状态,输出普通数据框 )
关键细节说明
- 统一角色取值:用
mutate()结合case_when()实现批量替换,这种方式比多次嵌套if_else更清晰,也方便后续扩展其他替换规则 - 处理缺失值:均值计算时添加
na.rm = TRUE,避免数据中存在缺失值时导致结果为NA - 兼容低版本dplyr:如果你的dplyr版本低于1.0.0,
.groups参数不支持,可以把这一行替换成末尾加ungroup():
avg_yrs <- barplot_data %>% mutate(JobRole = case_when( JobRole %in% c("Admin", "Administrative") ~ "Administrative2", TRUE ~ JobRole )) %>% group_by(Gender, JobRole, Department) %>% summarise(averageyrs = mean(YearsWithCurrManager, na.rm = TRUE)) %>% ungroup()
内容的提问来源于stack exchange,提问作者Rsm_242
相关产品推荐
相关产品推荐

