如何在R DataFrame或Excel中按企业ID汇总订购品类次数
处理重复订购记录的汇总方案(R + Excel两种实现)
针对你这个63万行的数据集,我整理了两种实用的实现方法,分别适配R DataFrame和Excel场景,都能高效完成按企业分组汇总订购次数的需求:
R语言实现(用dplyr包,高效处理大数据)
因为你的数据里同一企业的Year、Month等字段都是一致的,我们只需要按Company_id和这些不变字段分组,然后对品类列求和即可——刚好求和的结果就是该企业订购对应品类的次数。
步骤和代码如下:
- 先安装并加载dplyr包(如果还没装的话):
# 安装包(仅第一次运行需要) install.packages("dplyr") # 加载包 library(dplyr)
- 读取你的数据(假设是CSV格式,Excel的话用
readxl::read_excel()):
# 读取CSV df <- read.csv("your_dataset.csv", stringsAsFactors = FALSE) # 如果是Excel文件 # df <- readxl::read_excel("your_dataset.xlsx")
- 分组汇总:
summary_df <- df %>% # 按所有非品类字段分组,保证这些字段的唯一性 group_by(Company_id, Year, Month, Employee_Range, Employees) %>% # 对三个品类列分别求和,得到订购次数 summarise( Cheese = sum(Cheese, na.rm = TRUE), Chips = sum(Chips, na.rm = TRUE), Eggs = sum(Eggs, na.rm = TRUE), .groups = "drop" # 取消分组状态,返回普通DataFrame )
这样得到的summary_df就是你需要的汇总表,dplyr处理几十万行数据速度很快,完全没问题。
Excel实现(用Power Query,避免大数据卡顿)
如果更习惯用Excel,直接用函数或者数据透视表可能会卡顿,推荐用Power Query来处理,效率更高:
- 打开Excel,把数据导入到Power Query:
- 选中数据区域(或表格),点击「数据」选项卡 → 「自表格/区域」(如果是外部文件,选「自文件」→ 对应格式)
- 在Power Query编辑器中进行分组:
- 按住Ctrl选中
Company_id、Year、Month、Employee_Range、Employees这几列 - 点击「转换」选项卡 → 「分组依据」
- 在弹出的对话框中:
- 「分组依据」保持默认的「高级」
- 点击「添加分组」,依次设置:
- 新列名:
Cheese,操作:求和,列:Cheese - 新列名:
Chips,操作:求和,列:Chips - 新列名:
Eggs,操作:求和,列:Eggs
- 新列名:
- 点击「确定」
- 按住Ctrl选中
- 关闭并上载数据:点击「主页」选项卡 → 「关闭并上载」,汇总后的表格就会出现在新工作表里。
另外,因为你提到同一企业仅订购单一品类,所以汇总后的每个企业只会有一个品类列有数值,其他都是0,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Data Science
相关产品推荐
相关产品推荐

