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
相关产品推荐
相关产品推荐

