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

如何按列名分组计算DataFrame/矩阵的均值和标准差(忽略NA)

解决方案

基础R实现

你之前的代码是按行维度计算统计量,要得到每个分组所有数值的整体均值和标准差,只需将同分组的多列数据拉平为一维向量后再计算即可,代码如下:

# 按列名拆分数据框
group_data <- split.default(df, names(df))

# 计算分组整体均值
sapply(group_data, function(x) mean(unlist(x), na.rm = TRUE))
# 输出:
#      sun      sky 
# 3.170588 5.472727 

# 计算分组整体标准差
sapply(group_data, function(x) sd(unlist(x), na.rm = TRUE))
# 输出:
#      sun      sky 
# 2.677631 2.102423 

核心逻辑:unlist()会把同分组的多列数据全部合并为一维向量,直接对该向量计算均值和标准差,得到的就是所有非NA值的整体统计量,和你给出的预期结果完全一致。

tidyverse实现

如果你习惯使用tidyverse生态的语法,也可以通过转长表后分组统计的方式实现:

library(dplyr)
library(tidyr)

df %>% 
  pivot_longer(cols = everything(), names_to = "group", values_to = "val") %>% 
  group_by(group) %>% 
  summarise(
    mean = mean(val, na.rm = TRUE),
    sd = sd(val, na.rm = TRUE)
  )
# 输出:
# # A tibble: 2 × 3
#   group  mean    sd
#   <chr> <dbl> <dbl>
# 1 sky    5.47  2.10
# 2 sun    3.17  2.68

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:51:04