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

在R中按赛季和月份分组DataFrame并计算进球统计指标

R 数据分组计算需求

原始数据

我有一个名为df的体育赛事数据框,包含Season、Date、Home、Away、Goals列,示例数据如下:

Season       Date      Home      Away Goals
1    2013 06/04/2013   Arsenal   Chelsea     3
2    2013 06/04/2013 Tottenham Newcastle     5
3    2013 10/04/2013     Milan   Rangers     4
4    2013 07/05/2013     Real     Bayern     1
5    2013 07/05/2013  Juventus     Inter     2
6    2013 07/06/2013 Barcelona   Chelsea     1
7    2014 03/04/2014     Braga   Benfica     3
8    2014 13/04/2014   Rangers   Chelsea     1
9    2014 08/05/2014    Bayern Tottenham     0
10   2014 10/05/2014 Newcastle     Braga     2

需求说明

需要按赛季-月份分组,完成以下计算:

  • 每月所有赛事的总进球数
  • 每月场均进球数
  • 每赛季场均进球数
  • 显示每个赛季对应的月份

期望输出的数据框格式如下:

Season month TotalGoalsMonth AvGoalsMonth AvGoalsSeason
1   2013     4              12          4.0          2.67
2   2013     5               3          1.5          2.67
3   2013     6               1          1.0          2.67
4   2014     4               4          2.0          1.50
5   2014     5               2          2.0          1.50

实现方案

使用dplyr和lubridate包完成操作,步骤如下:

1. 加载所需包

library(dplyr)
library(lubridate)

2. 处理日期列,提取月份

将Date列转换为标准日期格式,再提取月份:

df <- df %>%
  mutate(Date = dmy(Date),  # 按日/月/年格式解析日期字符串
         month = month(Date))

3. 分组计算指标

按赛季和月份分组计算月度指标,同时计算赛季场均进球并匹配到对应行:

result <- df %>%
  group_by(Season, month) %>%
  summarise(
    TotalGoalsMonth = sum(Goals),
    AvGoalsMonth = mean(Goals),
    .groups = "drop_last"  # 保留赛季分组,用于后续计算赛季场均
  ) %>%
  mutate(AvGoalsSeason = mean(df$Goals[df$Season == cur_group()$Season])) %>%
  ungroup() %>%
  mutate(AvGoalsSeason = round(AvGoalsSeason, 2))  # 保留两位小数

4. 调整格式(可选)

确保月份为整数类型,列顺序与示例一致:

result <- result %>%
  mutate(month = as.integer(month)) %>%
  select(Season, month, TotalGoalsMonth, AvGoalsMonth, AvGoalsSeason)

代码说明

  • dmy(Date):lubridate包的函数,自动识别日/月/年格式的字符串并转换为日期对象
  • group_by(Season, month):按赛季+月份分组,计算月度总进球和场均进球
  • cur_group()$Season:获取当前分组的赛季值,用于筛选对应赛季的所有进球数据计算场均
  • round(...):将赛季场均进球保留两位小数,与示例格式统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:55:10