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

在R中按组计算均值并求与基线的差值(dplyr方案)

用dplyr高效计算多组均值及组间差值

针对以基因为行、多组重复列为结构的大数据框,以下是用dplyr实现需求的高效方案:

步骤1:准备环境与示例数据

先加载dplyr包,并用你提供的代码生成示例数据(设置随机种子保证结果可复现):

library(dplyr)

set.seed(123)
m <- matrix(runif(72, min = -10, max = 15), nrow = 8, ncol = 9)
df <- as.data.frame(m, row.names = paste0('g', rep(1:8))) 
colnames(df) <- c(paste0("A_", rep(1:3)), paste0("B_", rep(1:3)), paste0("C_", rep(1:3)))

步骤2:计算每组均值并生成差值结果

利用across()批量选中目标列,结合向量化的rowMeans()计算行均值(比rowwise()效率更高,适合大规模数据),再以A组为基线计算差值:

res_tab <- df %>%
  # 计算各组的行均值
  mutate(
    mean_A = rowMeans(across(starts_with("A_"))),
    mean_B = rowMeans(across(starts_with("B_"))),
    mean_C = rowMeans(across(starts_with("C_")))
  ) %>%
  # 计算B、C组相对A组的差值
  mutate(
    B = mean_B - mean_A,
    C = mean_C - mean_A
  ) %>%
  # 只保留需要的差值列,保留原行名
  select(B, C)

结果说明

最终的res_tab结构完全符合需求:行名为原基因名,列是B组、C组相对A组的差值。可以通过print(res_tab)查看结果:

print(res_tab)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:15:37