R语言如何基于周度tsibble数据计算并添加月度需求平均值列
你可以通过dplyr的分组聚合逻辑实现月度平均需求计算,并新增列到原tsibble对象中,具体操作如下:
方法1:基于现有year、Month字段计算
这是最直接的方式,按年份+月份分组避免跨年同月数据混淆:
# 加载依赖包,已安装可跳过 library(dplyr) # 新增月度平均需求列 Demandts <- Demandts %>% # 按年份、月份双维度分组,确保同一年的同一个月数据分为一组 group_by(year, Month) %>% # 计算当前组的需求平均值,na.rm=TRUE可忽略缺失值避免返回NA mutate(monthly_avg_demand = mean(Demand, na.rm = TRUE)) %>% # 取消分组,避免后续操作受分组逻辑影响 ungroup()
方法2:基于Date字段计算(更稳妥)
如果担心year、Month字段存在数据错误,可以直接用日期字段按月份聚合:
library(dplyr) library(lubridate) Demandts <- Demandts %>% # 将日期对齐到当月第一天,作为分组依据 group_by(month_start = floor_date(Date, unit = "month")) %>% mutate(monthly_avg_demand = mean(Demand, na.rm = TRUE)) %>% ungroup()
后续ggplot绘图参考
如果你需要绘制月度需求走势图表,可以先汇总为每月一行的数据集再绘图,避免重复数据干扰:
library(ggplot2) # 汇总月度数据集 monthly_summary <- Demandts %>% group_by(year, Month) %>% summarise(avg_demand = mean(Demand, na.rm = TRUE), .groups = "drop") # 绘制分年份月度平均需求柱状图 ggplot(monthly_summary, aes(x = factor(Month), y = avg_demand, fill = factor(year))) + geom_col(position = "dodge") + labs(x = "月份", y = "平均需求", fill = "年份")
内容的提问来源于stack exchange,提问作者Joseph Droogan
相关产品推荐
相关产品推荐

