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

使用dplyr计算分组汇总后各处理组相对对照组的百分比变化

dplyr单链实现对照组百分比变化计算

可以直接在dplyr的链式操作中一步完成计算,不需要拆分多步生成独立对照组表、再做关联,核心是通过逻辑索引直接提取汇总后的对照组均值做全表计算。

  • 核心逻辑:分组汇总得到各组均值后,用grp == "control"匹配到对照组的均值,统一计算所有组相对于该值的百分比变化,对照组计算结果自动为0,不需要额外赋值。
  • 实现代码:
library(dplyr)

# 模拟数据
set.seed(5)
dd <- data.frame(id = rep(c(1:4), 3),
                 val = c(rnorm(4) +2,
                         rnorm(4) +3,
                         rnorm(4) +4),
                 grp = rep(c("control", "ch1", "ch2"), each = 4))

# 一步计算结果
result <- dd %>% 
  group_by(grp) %>% 
  summarise(my_mean = mean(val)) %>%
  mutate(perc_change = (my_mean - my_mean[grp == "control"])/my_mean[grp == "control"] * 100)
  • 输出结果:
# A tibble: 3 × 3
  grp     my_mean perc_change
  <chr>     <dbl>       <dbl>
1 ch1        3.14       48.3 
2 ch2        4.47      111.  
3 control    2.12        0   

如果需要调整百分比的保留小数位数,可在mutate中配合round()函数使用,比如perc_change = round((my_mean - my_mean[grp == "control"])/my_mean[grp == "control"] * 100, 2)即可保留两位小数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:27:02