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

如何用dplyr在大分组内的子分组中进行汇总计算?

解决方案

你的问题出在分组维度上——你需要按**子分组(由plot的首位数字区分)+ 处理组trt**共同分组,而不是仅按trt分组。以下是修正后的代码:

library(dplyr)

# 第一步:从plot中提取子分组标识(这里取百位数字作为子分组)
ex <- ex %>%
  mutate(block = substr(as.character(plot), 1, 1))

# 第二步:按子分组和trt分组计算均值,最后去掉block列匹配期望结构
correct_result <- ex %>%
  group_by(block, trt) %>%
  summarise(rating = mean(value), .groups = "drop") %>%
  select(trt, rating)

运行后得到的结果与你提供的correct数据框完全一致:

trt  rating
1 a      1.5
2 b      3.5
3 c      5.5
4 a      1.5
5 b      3.5
6 c      5.5
7 a      1.5
8 b      3.5
9 c      5.5

关键说明

  • 原代码仅按trt分组,会把所有同处理组的观测合并计算均值,因此只得到3行结果;
  • 新增的block变量用来区分不同子分组(比如plot以1开头的为一组,2开头的为另一组),再结合trt分组后,每个子分组内的每个处理组都会单独计算均值,最终得到9行结果;
  • 如果你的子分组规则不是取plot首位数字,只需调整mutate(block = ...)的逻辑即可,核心是先定义子分组变量,再按子分组+trt共同分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:54:25