You need to enable JavaScript to run this app. 如何用lubridate与dplyr提取日期生成票量年-月汇总表
优惠活动
大模型
产品
解决方案
定价
更多

如何用lubridate与dplyr提取日期生成票量年-月汇总表

R 语言实现年-月维度开票量交叉统计落地方案

常见实现卡点

使用lubridate+dplyr链路无法得到预期结果,通常是以下三类问题导致:

  • 原始列映射错位:示例给出的原始结构中,日期字符串被标记为number_of_tickets字段、开票数值被标记为date字段,构建分析用数据框时若未对齐对应关系,所有后续计算都会出错
  • 日期解析格式不匹配:现有日期为「日-月-年」格式(如01-01-2019),若使用默认的年-月-日解析规则,会输出全空值,导致分组维度完全失效
  • 月份顺序混乱:若直接将月份转为文本名称,汇总结果会按英文字母顺序排列月份,无法匹配1-12月的自然展示顺序

分步实现流程

  1. 加载所需依赖包
    library(dplyr)
    library(lubridate)
    library(tidyr)
    
  2. 构建规范原始数据集
    对齐列的对应关系:number_of_tickets为数值型开票量,date为字符串格式的开票日期,代码示例可直接替换为本地读取的业务数据源:
    # 示例原始数据(替换为实际业务数据即可)
    ticket_raw <- tibble(
      number_of_tickets = c(1500, 1200, 2000, 1800, 2500, 3200),
      date = c("01-01-2019", "15-01-2019", "03-02-2019", "10-02-2020", "22-03-2020", "05-03-2020")
    )
    
  3. 数据清洗与维度提取
    适配自定义日期格式,提取年、月统计维度,同时固定月份的排列顺序:
    ticket_clean <- ticket_raw %>%
      mutate(
        # 按日-月-年规则解析日期为标准Date类型
        date_parsed = dmy(date),
        # 提取年份作为行维度
        stat_year = year(date_parsed),
        # 提取月份作为列维度,固定1-12月的顺序与展示标签
        stat_month = factor(
          month(date_parsed),
          levels = 1:12,
          labels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
        )
      )
    
  4. 分组汇总累计开票量
    monthly_summary <- ticket_clean %>%
      group_by(stat_year, stat_month) %>%
      summarise(
        total_count = sum(number_of_tickets, na.rm = TRUE),
        .groups = "drop"
      )
    
  5. 生成交叉统计结果
    通过宽格式转换,实现“行对应年份、列对应月份”的目标结构:
    cross_stat_result <- monthly_summary %>%
      pivot_wider(
        id_cols = stat_year,
        names_from = stat_month,
        values_from = total_count,
        # 无数据的月份自动补0
        values_fill = 0
      )
    

输出结果说明

最终生成的cross_stat_result完全匹配预期展示效果:

  • 每行对应一个统计年份
  • 每列对应一个自然月的累计开票总数量
  • 列的展示顺序固定为Jan到Dec,不会出现字母序混乱的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 19:06:02