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

如何从R语言的summary()结果表中提取均值?

提取指定列均值的简便方法

方法1:用dplyr直接批量计算均值(最推荐)

不需要先跑summary(),直接用dplyr的across函数批量对目标列计算均值,一步到位:

library(dplyr)

# 批量计算指定列的均值(na.rm=TRUE用于处理缺失值,可按需调整)
avg_minutes <- Activity %>%
  summarize(across(c(VeryActiveMinutes, FairlyActiveMinutes, LightlyActiveMinutes, SedentaryMinutes), mean, na.rm = TRUE))

# 查看结果
avg_minutes

方法2:从已有的summary结果中提取均值

如果已经生成了totalTime这个summary对象,可以把它转换成数据框后筛选均值行:

# 将summary结果转为结构化数据框
summary_df <- as.data.frame(totalTime)

# 提取标注为"Mean"的行(即各列均值)
avg_from_summary <- summary_df[summary_df$Var2 == "Mean", ]

# 整理成易读的格式
result <- data.frame(
  列名 = rownames(avg_from_summary),
  均值 = avg_from_summary$Freq
)

rownames(result) <- NULL
result

方法3:用base R的colMeans函数

如果不想依赖dplyr,base R的colMeans也能快速计算多列均值:

# 先选择目标列,再计算列均值
selected_cols <- Activity[, c("VeryActiveMinutes", "FairlyActiveMinutes", "LightlyActiveMinutes", "SedentaryMinutes")]
avg_minutes_base <- colMeans(selected_cols, na.rm = TRUE)

# 转为数据框方便查看
as.data.frame(avg_minutes_base)

补充说明:你之前手动求和的方法失败,大概率是因为VeryActiveMinutes是向量而非数据框,若要继续用这种方式,应该写成sum(VeryActiveMinutes)/length(VeryActiveMinutes),但显然上面的批量方法更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:49:54