如何在R中按Time筛选并统计各薪资区间的性别分布
解决方案
首先确保你已安装并加载dplyr包:
install.packages("dplyr") # 未安装时执行 library(dplyr)
假设你的原始数据框名为df,以下是实现代码:
1. 生成part time统计数据框
part_time_stats <- df %>% filter(Time == "part time") %>% group_by(Payband) %>% summarize( male_count = sum(Gender == "male", na.rm = TRUE), female_count = sum(Gender == "female", na.rm = TRUE), total_count = n() ) %>% ungroup()
2. 生成full time统计数据框
full_time_stats <- df %>% filter(Time == "full time") %>% group_by(Payband) %>% summarize( male_count = sum(Gender == "male", na.rm = TRUE), female_count = sum(Gender == "female", na.rm = TRUE), total_count = n() ) %>% ungroup()
代码说明
filter():筛选出指定工时类型的数据group_by(Payband):按薪资等级分组,后续统计基于每个分组计算summarize():sum(Gender == "male", na.rm = TRUE):统计每组男性数量,na.rm=TRUE自动忽略缺失值sum(Gender == "female", na.rm = TRUE):统计每组女性数量n():直接返回每组总人数
ungroup():完成统计后取消分组,避免后续操作受分组状态影响
如果你的Gender列存在大小写不一致的情况(比如Male/male),可先统一格式:
df$Gender <- tolower(df$Gender)
内容的提问来源于stack exchange,提问作者atm1984
相关产品推荐
相关产品推荐

