如何将每日抗生素使用数据按年度季度聚合绘制柱状图?
按年度季度聚合抗生素使用数据并绘制柱状图的解决方案
嘿,刚接触R就能自己处理日期并绘图已经很棒啦!我来帮你搞定按年度季度聚合数据的问题,用dplyr和lubridate这两个包就能轻松实现,步骤很清晰:
1. 准备所需的R包
首先我们需要安装并加载几个实用的包:dplyr用于数据聚合,lubridate简化日期处理,ggplot2用来绘图(你已经在用啦):
# 第一次使用时先安装包 install.packages(c("dplyr", "lubridate", "ggplot2")) # 加载包 library(dplyr) library(lubridate) library(ggplot2)
2. 数据预处理与季度聚合
先把你转换好的日期列添加回数据框,然后提取年份和季度信息,最后按年度季度分组计算总使用量:
# 读取数据并转换日期(和你之前的代码一致,这里把日期列整合到数据框里) data001 <- read.csv("001.csv") data001$date <- as.Date(data001$Date, "%d/%m/%Y") # 添加年份、季度以及合并后的年度季度标签(比如"2013 Q2") data001 <- data001 %>% mutate( year = year(date), quarter = quarter(date), year_quarter = paste(year, "Q", quarter, sep = "") ) # 按年度季度分组,计算每个季度的抗生素总使用量 quarterly_data <- data001 %>% group_by(year_quarter) %>% summarise(total_antibiotic = sum(Antibiotic.Total, na.rm = TRUE)) %>% # 将季度标签转为因子并按原始顺序排列,避免绘图时x轴顺序混乱 mutate(year_quarter = factor(year_quarter, levels = unique(year_quarter)))
这里na.rm = TRUE是为了忽略可能存在的缺失值,确保求和结果正常。
3. 绘制季度总用量柱状图
现在用聚合好的数据绘制柱状图,还可以调整x轴标签的角度避免重叠:
ggplot(quarterly_data, aes(x = year_quarter, y = total_antibiotic)) + geom_bar(stat = "identity", fill = "steelblue3") + labs( x = "年度季度", y = "抗生素总使用量(克)", title = "各年度季度抗生素总使用量" ) + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签,提升可读性
这样你就能得到每个柱子对应一个年度季度总用量的柱状图啦,如果还有其他问题随时问~
内容的提问来源于stack exchange,提问作者Danny_0101
相关产品推荐
相关产品推荐

