如何对数据框(df)中每n个列向量求均值并生成新数据框
R语言数据框按固定列数分组逐行计算均值方案
需求说明
对数据框的列每2个分为一组,逐行计算每组内列的均值,最终输出仅包含分组均值结果的新数据框。
示例数据
df <- data.frame(v1=1:6,V2=7:12,V3=13:18,v4=19:24,v5=25:30,v6=31:36)
实现方法
方法1:Base R 实现(无需额外安装包)
核心思路是先对列索引按每2个为一组拆分,再对每组调用rowMeans()逐行计算均值:
# 设定每组列数,这里按需求设为2 n <- 2 # 列索引分组 col_groups <- split(seq(ncol(df)), ceiling(seq(ncol(df)) / n)) # 逐组计算行均值并转为数据框 result <- as.data.frame(sapply(col_groups, function(g) rowMeans(df[, g]))) # 自定义结果列名 colnames(result) <- paste0("mean_", names(col_groups))
方法2:tidyverse 实现
使用purrr的循环映射批量计算,代码更简洁易读:
library(dplyr) library(purrr) n <- 2 result <- map_dfc(seq(1, ncol(df), n), ~ rowMeans(df[, .x:(.x + n -1)])) %>% set_names(paste0("mean_group_", seq(ncol(df)/n)))
通用调整说明
如果需要修改每组的列数,只需修改代码中n的取值即可,无需调整其他逻辑。
内容的提问来源于stack exchange,提问作者Juan Almeira
相关产品推荐
相关产品推荐

