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

如何每7行计算非日期列平均值?现有代码结果有误且冗长

解决每7行计算非日期列平均值的R实现问题

原代码存在的问题

  • 分组时错误使用bankamerica$Group,应该直接引用列名Group,否则会绕过管道上下文,导致分组逻辑失效。
  • 仅针对tr列计算平均值,未覆盖所有非日期列。
  • 手动生成分组标签的步骤可以简化。

简洁的正确实现代码

# 加载工具包并读取数据
library(tidyverse)
bankamerica <- read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/bankamerica.csv')

# 按每7行分组,计算所有非日期列的平均值
weekly_avgs <- bankamerica %>%
  group_by(group = gl(nrow(.), 7)) %>%  # 自动生成每7行一组的分组标识
  summarize(across(-date, mean, na.rm = TRUE))  # 对除date外的所有列计算均值,忽略缺失值

代码说明

  • gl(nrow(.), 7):通过gl函数自动生成分组因子,将数据按每7行分为一组,即使总行数不是7的倍数,最后一组也会正常保留剩余行。
  • across(-date, mean, na.rm = TRUE):利用across批量处理列,-date指定排除日期列,mean为计算均值的函数,na.rm = TRUE确保忽略数据中的缺失值(如果存在)。

如果不确定日期列的名称,可使用更通用的写法自动识别排除日期/字符型列:

weekly_avgs <- bankamerica %>%
  group_by(group = gl(nrow(.), 7)) %>%
  summarize(across(where(~!is.character(.) && !inherits(., "Date")), mean, na.rm = TRUE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:24:27