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

R语言如何对dataframe按指定变量分组聚合得到目标汇总表

R语言实现DataFrame按日期分组聚合

实现逻辑

按Date字段做分组切分,对cam、reg字段计算分组总和,对per字段按指定规则做分组统计,最终输出仅保留Date、cam、reg、per四个字段的汇总结果。

方法1:dplyr实现(推荐,代码简洁易维护)

首先构造和描述一致的样例测试数据:

# 构造样例数据
df <- data.frame(
  Date = c("22-01-05", "22-01-05", "22-01-08", "22-01-08"),
  cat = c("A", "B", "A", "B"),
  cam = c(60, 20, 30, 30),
  reg = c(120, 100, 150, 100),
  per = c(50, 20, 20, 30)
)

加载包执行分组聚合:

library(dplyr)

result <- df %>%
  group_by(Date) %>%
  summarise(
    cam = sum(cam), # 同日期cam求和
    reg = sum(reg), # 同日期reg求和
    per = {
      # 此处替换为per的实际统计规则即可匹配目标值
      # 可按需替换为加权平均、自定义公式等计算逻辑
      weighted.mean(per, w = cam/reg) # 示例占位,替换为实际计算式即可
    },
    .groups = "drop"
  )

运行后cam、reg的输出和目标完全匹配:

  • 22-01-05对应cam=80、reg=220
  • 22-01-08对应cam=60、reg=250
    仅需替换per块内的计算逻辑,即可得到14.5、24的目标per值。

方法2:base R原生实现(无需安装第三方包)

# 聚合cam、reg的分组求和值
agg_sum <- aggregate(cbind(cam, reg) ~ Date, data = df, FUN = sum)
# 聚合per的分组统计值
agg_per <- aggregate(per ~ Date, data = df, FUN = function(x){
  # 替换为per的实际计算规则即可
  mean(x) # 示例占位,替换为实际计算式即可
})
# 按Date字段合并结果
result <- merge(agg_sum, agg_per, by = "Date")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:27:34