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

如何用R语言按UGA和Date聚合数据并统计AM/BX出现次数

按UGA和Date聚合统计Product的解决方案

需求回顾

按UGA和Date分组,统计:

  • Nb_AM:对应分组下Product为AM或AM/BX的记录数
  • Nb_BX:对应分组下Product为BX或AM/BX的记录数

方法1:使用基础R的aggregate函数

这是你提到的方法,通过创建逻辑标识列实现分组求和:

# 加载readxl包(未安装先运行 install.packages("readxl"))
library(readxl)

# 读取Excel文件
am <- read_excel("C:/Users/david/OneDrive/Bureau/Master data/Mémoire data analyst/Bases de données/Ventes/AM_per_UGA.xlsx")

# 生成标识列:判断每条记录是否属于AM/BX统计范围
am$count_AM <- am$Product %in% c("AM", "AM/BX")
am$count_BX <- am$Product %in% c("BX", "AM/BX")

# 按UGA和Date聚合,对标识列求和(TRUE=1,FALSE=0,求和即得到次数)
agg_result <- aggregate(
  cbind(Nb_AM = count_AM, Nb_BX = count_BX) ~ UGA + Date,
  data = am,
  FUN = sum
)

方法2:使用dplyr包(更简洁直观)

如果习惯tidyverse风格,用dplyr的分组汇总更高效:

# 安装并加载dplyr包(未安装先运行 install.packages("dplyr"))
library(dplyr)
library(readxl)

# 读取数据并直接分组汇总
dplyr_result <- am %>%
  group_by(UGA, Date) %>%
  summarise(
    Nb_AM = sum(Product %in% c("AM", "AM/BX")),
    Nb_BX = sum(Product %in% c("BX", "AM/BX")),
    .groups = "drop"  # 取消分组状态,返回普通数据框
  )

说明

两种方法最终都会生成你需要的格式:以UGA和Date为行标识,包含Nb_AM和Nb_BX统计列的表格。逻辑值TRUE在求和时会自动转换为1,FALSE转换为0,刚好对应记录的计数需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:54:17