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

如何对R语言DataFrame中重复列按行求均值并合并?

实现方法

当然可以实现,下面提供两种常用的R语言解决方案:

方法一:基础R实现

无需额外安装包,直接利用基础函数完成列分组与行均值计算:

# 按列名对数据框列进行分组
col_groups <- split(names(temp), names(temp))

# 对每个分组内的列计算行均值,合并为新数据框
result <- data.frame(lapply(col_groups, function(group) rowMeans(temp[, group])))

# 调整列顺序为指定的A、C、D、E、F、G(可选,确保列顺序符合需求)
result <- result[, c("A", "C", "D", "E", "F", "G")]

方法二:tidyverse工具包实现

适合习惯tidy风格的用户,步骤更直观:

library(tidyverse)

result <- temp %>%
  rownames_to_column("row_id") %>%  # 将行名转为单独列,避免转格式时丢失
  pivot_longer(-row_id, names_to = "col_name", values_to = "value") %>%  # 宽格式转长格式
  group_by(row_id, col_name) %>%  # 按行名和列名分组
  summarise(mean_value = mean(value), .groups = "drop") %>%  # 计算每组均值
  pivot_wider(names_from = col_name, values_from = mean_value) %>%  # 长格式转回宽格式
  column_to_rownames("row_id")  # 恢复原行名

结果示例

运行上述代码后,得到的结果数据框如下(保留原行名,列仅包含A、C、D、E、F、G):

A          C        D        E        F        G
5_8S_rRNA 0.000000 0.00000000 0.000000 0.000000 0.000000 0.000000
5S_rRNA   0.000000 0.00000000 0.000000 0.000000 2.275007 0.000000
7SK       0.000000 0.00000000 0.000000 0.000000 0.000000 0.000000
A1BG      3.530516 3.44095220 3.090035 4.305202 3.680324 5.645010
A1BG-AS1  1.536335 2.35049725 2.015795 2.115993 1.778209 3.099295
A1CF      0.009523 0.02856915 0.094517 0.000000 0.000000 0.000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:36:18