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

R语言按季度分组统计数据时如何补全无记录季度的0值

解决方案

你可以使用tidyr::complete()函数补全缺失的季度序列,同时将缺失的病例数填充为0,修改后的代码如下:

library(tidyr)
library(dplyr)

mydata <- dataset %>% 
    janitor::clean_names() %>% 
    mutate(test_date = lubridate::dmy(test_date)) %>% 
    mutate(test_quarter = zoo::as.yearqtr(test_date)) %>% 
    group_by(test_quarter) %>% 
    summarise(cases = n()) %>%
    # 补全连续季度,缺失值填0
    complete(test_quarter = seq(min(test_quarter), max(test_quarter), by = 0.25), 
             fill = list(cases = 0))

参数说明

  • seq(min(test_quarter), max(test_quarter), by = 0.25):自动生成数据覆盖范围内最早到最晚的所有连续季度,zoo::yearqtr类型以1年为单位,步长0.25对应1个季度的间隔
  • fill = list(cases = 0):指定补全的行中cases字段的值填充为0

如果需要自定义季度的起止范围,直接替换seq里的起止值即可,比如固定统计2020年Q1到2023年Q4的所有季度,可以写成:
test_quarter = seq(zoo::as.yearqtr("2020 Q1"), zoo::as.yearqtr("2023 Q4"), by = 0.25)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:45:04