如何对矩阵每24个值计算均值、最值及差值?
矩阵按每24个元素分组统计均值、极值及差值
你的示例数据是一个包含240个正态分布值的列矩阵,我们可以按每24个元素为一组,完成均值、最大值、最小值及极值差的计算,以下是两种常用实现方式:
方法一:Base R 实现
无需额外安装包,直接用基础函数完成分组统计:
# 生成示例数据 data <- as.matrix(rnorm(240,8,6)) # 生成分组标签:每24个元素为一组,共10组 groups <- gl(n = nrow(data) %/% 24, k = 24) # 分组计算统计量 group_stats <- tapply(data, groups, function(x) { data.frame( mean = mean(x), max = max(x), min = min(x), diff = max(x) - min(x) ) }) # 合并结果为数据框 result <- do.call(rbind, group_stats) print(result)
代码说明:
gl()生成分组因子,n指定组数,k指定每组元素个数;tapply()按分组对数据应用自定义函数,计算所需统计量;do.call(rbind, ...)将分散的分组结果合并为统一的数据框。
方法二:Tidyverse 实现
使用dplyr和tibble包,代码更直观易读:
# 安装并加载所需包(首次使用需安装) # install.packages("tidyverse") library(dplyr) library(tibble) # 生成示例数据 data <- as.matrix(rnorm(240,8,6)) # 转换格式、分组并统计 result <- data %>% as_tibble(colnames = "value") %>% mutate(group = rep(1:(n() %/% 24), each = 24)) %>% group_by(group) %>% summarise( mean = mean(value), max = max(value), min = min(value), diff = max - min ) print(result)
代码说明:
as_tibble()将矩阵转换为 tibble 格式,方便后续操作;mutate()添加分组列,每组包含24个元素;group_by()+summarise()按分组汇总计算所需统计量。
内容的提问来源于stack exchange,提问作者TUSTLGC
相关产品推荐
相关产品推荐

