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

R语言按注释分组计算数据框每行对应分组的平均值

实现方案

下面提供两种可直接运行在你示例数据上的实现方式:

方法1:Base R 实现(无需额外安装依赖包)

# 构建分组与对应样本的映射关系
group_sample_map <- split(Annotation$Sample, Annotation$Group)

# 按行遍历矩阵,计算每行在各分组下的均值
row_group_means <- t(apply(M, 1, function(row_vals) {
  sapply(group_sample_map, function(samples) mean(row_vals[samples]))
}))

# 转为数据框格式
result_df <- as.data.frame(row_group_means)

# 如果需要将结果合并到原矩阵中,执行以下代码
M_with_means <- cbind(as.data.frame(M), result_df)

方法2:Tidyverse 实现(可读性高,便于后续拓展分析)

需提前安装加载dplyr、tidyr、tibble包:

library(dplyr)
library(tidyr)
library(tibble)

result_df <- M %>%
  as.data.frame() %>%
  rownames_to_column("Gene") %>%
  pivot_longer(-Gene, names_to = "Sample", values_to = "Expression") %>%
  inner_join(Annotation, by = "Sample") %>%
  group_by(Gene, Group) %>%
  summarise(Group_mean = mean(Expression), .groups = "drop") %>%
  pivot_wider(names_from = "Group", values_from = "Group_mean") %>%
  column_to_rownames("Gene")

# 合并到原矩阵
M_with_means <- cbind(as.data.frame(M), result_df)

两种方法输出的result_df即为每个基因对应各分组的平均值表,可按需直接使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:01