【发布时间】:2021-07-31 10:05:33
【问题描述】:
我正在尝试计算组之间的百分比变化,在我的 data.frame 中以组的形式组织一个控制组和多个处理组。由于我有很多观察,我正在使用dplyr。我不明白的是,如何有效地设置要比较的组?通常,我会将此任务拆分为多个步骤:
- 按组计算平均值
- 子集控制组以创建新的“控制”数据框
- 将“控制”数据帧加入第一个 df
- 计算对照和处理之间的百分比变化。
不过,我想知道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))
dd %>%
group_by(grp) %>%
summarise(my_mean = mean(val))
计算出“对照”和单独治疗之间百分比变化的预期结果:
# A tibble: 3 x 2
grp my_mean perc_change
<fct> <dbl>
1 ch1 2.30 XX
2 ch2 5.00 YY
3 control 1.39 0
【问题讨论】:
标签: r dplyr percentage