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

如何基于category与status组合计算R数据框value列的均值?

嘿,这个需求在R里有好几种简单的实现方式,我给你整理了几个常用方案,你可以按需选择:

首先先把你的数据框定义好,方便直接测试:

df <- data.frame(category = c('A','B','C','A','C','B'), 
                 value = c(5.4, 5, 3.4,7.5,6.7,3.5), 
                 status = c('HC','D','D','HC','HC','D'))
方法一:基础R原生函数(无需额外安装包)

用aggregate()函数就能轻松实现,它会自动按照category和status的组合分组,计算每组value的均值——如果某组合只有单个值,mean()会直接返回这个值,完全符合你的要求:

result_aggregate <- aggregate(value ~ category + status, data = df, FUN = mean)
print(result_aggregate)

执行后输出结果:

category status value
1        A     HC  6.45
2        C     HC  6.70
3        B      D  4.25
4        C      D  3.40
方法二:用dplyr包(tidyverse风格,语法更直观)

如果你平时常用tidyverse生态,dplyr的管道语法会更易读。先安装加载dplyr,然后通过group_by()指定分组变量,summarise()计算均值:

# 如果没装过dplyr先运行:install.packages("dplyr")
library(dplyr)

result_dplyr <- df %>%
  group_by(category, status) %>%
  summarise(mean_value = mean(value), .groups = "drop")

print(result_dplyr)

这里.groups = "drop"是用来取消结果的分组状态,得到普通的数据框;如果不需要的话也可以省略,结果会是一个分组tibble。

方法三:用data.table包(适合大数据集,速度更快)

如果你的数据集很大,data.table的分组计算效率会更高。先把数据框转成data.table格式,再指定分组和计算逻辑:

# 如果没装过data.table先运行:install.packages("data.table")
library(data.table)

setDT(df)
result_dt <- df[, .(mean_value = mean(value)), by = .(category, status)]
print(result_dt)

这三种方法都能完美实现你的需求,选哪个全看你平时的代码习惯和数据规模啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:04:48