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

如何按每12行计算均值?附单列数据R语言示例

按每12行分组计算单列数据的均值(R语言实现)

问题背景

你有一个仅包含单列的TXT文件,数据示例如下:

data=structure(list(V3 = c(1:120)), row.names = c(NA,120L), class = "data.frame")

需要按每12行一组计算均值,即前12行均值为第一个结果,接下来12行均值为第二个结果,以此类推。


实现方法

第一步:读取TXT文件

先将TXT文件读取为R的数据框:

# 替换为你的文件实际路径
data <- read.table("your_data.txt", header = FALSE, col.names = "V3")

若你的TXT文件自带表头,将header参数改为TRUE即可。


方法1:Base R 原生实现

无需额外安装包,用原生函数快速完成分组计算:

# 按每12行拆分数据并计算均值
mean_results <- sapply(
  split(data$V3, ceiling(seq_along(data$V3)/12)),
  mean
)
  • seq_along(data$V3)生成每行的索引(1到120)
  • ceiling(seq_along(data$V3)/12)将索引按每12个一组,生成分组号(1到10)
  • split()按分组拆分数据,sapply()对每个分组计算均值

也可以用tapply()实现:

data$group <- rep(1:(nrow(data)/12), each = 12)
mean_results <- tapply(data$V3, data$group, mean)

方法2:dplyr(Tidyverse 风格)

适合习惯tidyverse语法的用户,代码逻辑更直观:

library(dplyr)

mean_results <- data %>%
  # 生成每12行一组的分组标识
  mutate(group = ceiling(row_number()/12)) %>%
  # 按分组聚合计算均值
  group_by(group) %>%
  summarise(mean_value = mean(V3))

运行后会得到包含分组号和对应均值的数据框,便于后续分析或导出。


方法3:data.table(高效处理大数据)

如果数据量较大(远超120行),data.table的性能优势更显著:

library(data.table)

# 将数据框转换为data.table格式
setDT(data)
# 按每12行分组计算均值
mean_results <- data[, .(mean_value = mean(V3)), by = .(group = ceiling(.I/12))]
  • .I是data.table内置的行索引变量,用法简洁高效

结果验证

以你提供的示例数据为例,第一组(1-12行)的均值为6.5,第二组(13-24行)为18.5,最终会得到10个依次递增12的均值结果,可自行核对验证。

内容的提问来源于stack exchange,提问作者bic ton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:21