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

Excel中按月度、美国州别提取净需求最高合作方的最简方法

分组取Top1销售记录高效实现方案

以下方案均基于BI导出的原始四列明细数据处理,无需手动删除冗余记录,输出结构可直接用于可视化项目或导入R分析。

方案1:Excel原生实现(无需插件,无格式错乱问题)

  • 导入原始明细数据到Excel,确认四列列名分别为Ship State、Month、Partner、Net Demand,删除空行、合并单元格,不要使用透视表导出的错乱垂直结构作为数据源。
  • 选中全量数据区域,点击「数据」选项卡下的「排序」,设置三层排序规则:第一层关键字为Ship State,次序升序;第二层关键字为Month,自定义序列匹配Jan到Dec的自然月份顺序;第三层关键字为Net Demand,次序降序。
  • 新增名为group_tag的辅助列,在表头下第一行(即数据第二行)输入公式=COUNTIFS($A$2:A2,A2,$B$2:B2,B2),下拉填充全列。该公式会为每个「发货州+月份」分组内的记录按排序顺序编号,每个分组内净需求最高的首条记录标记值为1。
  • 给全表开启筛选,在group_tag列筛选值为1的行,复制筛选结果粘贴到新工作表即可得到目标结构,导出为CSV文件可直接导入R使用。

方案2:R语言批量处理(适合大数据量场景,秒级输出结果)

将原始明细数据导入R得到数据框(假设命名为sales_data),可通过以下任意一种方式得到结果:

  • dplyr实现(逻辑直观,推荐):
library(dplyr)

top1_res <- sales_data %>%
  group_by(`Ship State`, Month) %>%
  # 如需去掉并列第一的记录,可保留with_ties = FALSE参数
  slice_max(order_by = `Net Demand`, n = 1, with_ties = FALSE) %>%
  ungroup()

# 导出结果到本地
write.csv(top1_res, "state_month_top1_partner.csv", row.names = FALSE)
  • 基础R实现(无需安装第三方包):
# 按净需求降序排序
sorted_data <- sales_data[order(-sales_data$`Net Demand`), ]
# 按发货州、月份去重,保留每个分组首条(即净需求最高)记录
top1_res <- sorted_data[!duplicated(sorted_data[, c("Ship State", "Month")]), ]

提示:如果原始数据存在同州同月同净需求的并列第一记录,Excel方案会默认保留排序后靠前的单条记录;R的dplyr方案如果去掉with_ties = FALSE参数,会保留所有并列第一的记录,可根据实际业务需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:12:51