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

在R语言中查找data.frame分组后薪资总和最高的组别

解决DataFrame分组薪资总和最高的问题

嘿,这个需求太常见啦,完全不用手动一个个算,R里有好几种简洁的方法能搞定,我给你分两种常用的方案,你看哪种顺手用哪种:

首先先构造一个和你场景匹配的示例数据框,方便你测试:

# 构造示例数据(模拟你的无规律分组+薪资数据)
set.seed(123) # 固定随机种子,保证结果可重复
df <- data.frame(
  group = sample(c("A", "B", "C", "D", "E"), 100, replace = TRUE),
  salary = sample(3000:15000, 100, replace = TRUE)
)

方案一:用Base R原生函数(无需额外安装包)

如果你不想装新包,用R自带的函数就能搞定:

  1. 先按分组计算薪资总和
# 按group分组,计算每组salary的总和
sum_salary <- aggregate(salary ~ group, data = df, FUN = sum)
  1. 直接定位到总和最高的分组
# 找到总和最大的行,提取分组名和对应总和
max_row <- sum_salary[which.max(sum_salary$salary), ]
cat("薪资总和最高的组是:", max_row$group, ",对应的总和为:", max_row$salary, "\n")

which.max()会自动帮你找到最大值所在的行索引,哪怕你有几百个分组,这一步也能瞬间完成。

方案二:用dplyr包(更直观的管道式操作)

如果你平时经常做数据清洗和分析,dplyr的语法会更流畅,写起来像自然语言一样:
先确保你安装了dplyr(没装的话先跑install.packages("dplyr")),然后:

library(dplyr)

# 管道式操作:分组→求和→取最大值行
max_salary_result <- df %>%
  group_by(group) %>%
  summarise(total_salary = sum(salary)) %>%
  slice_max(n = 1, order_by = total_salary)

# 查看结果
print(max_salary_result)
  • group_by(group):按分组列聚合
  • summarise(total_salary = sum(salary)):计算每组的薪资总和
  • slice_max(n = 1, order_by = total_salary):取总和最高的那一行(如果有多个组总和相同,把n=1改成你需要的数量就能全部取出)

要是你想看看所有组的薪资总和从高到低排序,只需要在slice_max前面加一行arrange(desc(total_salary))就行,这样能一目了然看到所有分组的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:12:28