R语言按Job.Family列分组统计Salaries与Retirement总和的方法

你可以通过以下几种常用方案实现按Job.Family分组求和的需求:
方法1:Base R 原生实现(无需额外安装包)
使用aggregate函数直接完成分组聚合,代码如下:
# 直接对选中的列按Job.Family分组求和 agg_result <- aggregate(. ~ Job.Family, data = data[1:20,c("Job.Family", "Salaries", "Retirement")], FUN = sum, na.rm = TRUE)
参数说明:na.rm = TRUE可以避免列中存在空值时求和结果为NA,若确定数据无空值可省略该参数。
方法2:dplyr包实现(语法更清晰,主流数据分析方案)
# 未安装包先运行install.packages("dplyr") library(dplyr) agg_result <- data[1:20,c("Job.Family", "Salaries", "Retirement")] %>% # 指定分组字段 group_by(Job.Family) %>% # 对每个分组计算两个字段的总和 summarise( total_Salaries = sum(Salaries, na.rm = TRUE), total_Retirement = sum(Retirement, na.rm = TRUE) )
如果你不需要压缩行数,希望保留所有原始行的同时新增对应职业类别的总和字段,把代码中的summarise替换为mutate即可。
方法3:data.table包实现(适合十万行以上的大数据量场景)
# 未安装包先运行install.packages("data.table") library(data.table) # 转换为data.table格式 setDT(data) agg_result <- data[1:20, .(total_Salaries = sum(Salaries, na.rm = TRUE), total_Retirement = sum(Retirement, na.rm = TRUE)), by = Job.Family]
内容的提问来源于stack exchange,提问作者Lee Kuo
相关产品推荐
相关产品推荐

