如何用dplyr在R中按组将列值除以同列内的对照值?
使用dplyr计算实验处理相对对照的均值
你可以通过按Target和Time分组,提取每组中对照(Treatment = "H")的mean值,再将同组内其他处理的mean除以该对照值,生成Relative Value变量。具体代码如下:
library(dplyr) # 假设你的数据存储在数据框df中 df_relative <- df %>% # 按Target和Time分组,确保对照基准是同目标、同时间点的 group_by(Target, Time) %>% mutate( # 提取当前分组中对照H的mean值 control_mean = mean[Treatment == "H"], # 计算相对值 `Relative Value` = mean / control_mean ) %>% # 取消分组(可选,根据后续需求决定) ungroup()
代码说明
group_by(Target, Time):确保我们在同一目标基因、同一时间点的范围内计算相对值,避免跨组混淆基准。mean[Treatment == "H"]:每个分组中只有一个H处理,因此直接提取该值作为对照基准。mean / control_mean:将当前行的实验处理均值除以对照均值,得到相对表达/测量值。
处理后的数据示例(以A组为例)
| Target | Treatment | Time | mean | sd(Value) | n | control_mean | Relative Value |
|---|---|---|---|---|---|---|---|
| A | A | 1899-12-31 00:10:00 | 2023.6667 | 192.289019 | 6 | 1929.0000 | ~1.049 |
| A | H | 1899-12-31 00:10:00 | 1929.0000 | 232.428914 | 6 | 1929.0000 | 1.000 |
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

