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

R语言如何将三列dataframe转换为按分组求第三列均值的矩阵

解决方案

方法1:基础R实现(无需额外安装包,推荐)

直接使用tapply函数分组聚合后直接生成矩阵:

# 第一个参数是要计算的数值列,第二个参数是行、列分组的列表,第三个参数是聚合函数
mat <- tapply(df$count, list(df$B, df$A), FUN = mean)

运行后直接得到预期结构的矩阵,输出如下:

A1  A2
B1 1.5 3.5
B2 5.5 7.5

方法2:tidyverse生态实现(可读性高,适合复杂处理场景)

先分组计算均值,再转换为宽表后转矩阵:

library(tidyverse)

mat <- df %>%
  # 按前两列分组计算均值
  group_by(B, A) %>%
  summarise(mean_val = mean(count), .groups = "drop") %>%
  # 长表转宽表,A列的唯一值作为新列
  pivot_wider(names_from = A, values_from = mean_val) %>%
  # 将B列设为行名
  column_to_rownames("B") %>%
  # 转换为矩阵格式
  as.matrix()

方法3:reshape2包dcast实现

library(reshape2)
# dcast直接指定行、列、聚合规则,再转换为矩阵
mat <- dcast(df, B ~ A, value.var = "count", fun.aggregate = mean) %>%
  column_to_rownames("B") %>%
  as.matrix()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:45:04