ggplot2多变量分组均值柱状图数据处理与绘图报错求助
问题解决步骤
1. 修正长格式数据转换错误
你原代码里误用了不存在的df_w_delays_mod,实际应该基于原始数据框df转换长格式:
# 转换为长格式并保留date列 df_mod <- cbind(df[4], stack(df[1:3])) # 重命名自动生成的列,提升可读性 names(df_mod) <- c("date", "values", "metric")
2. 为长格式数据添加月份列
你之前用transform处理的是原df,没有把月份信息同步到df_mod中,需要在目标数据框里生成月份字段:
# 先加载lubridate包(month函数依赖此包) library(lubridate) df_mod$month <- month(df_mod$date, label = TRUE)
3. 正确分组计算均值并绘图
要按月份+变量双重分组,才能得到每个月份下各指标的均值,同时指定.groups参数消除分组提示:
library(dplyr) library(ggplot2) df_mod %>% group_by(month, metric) %>% summarize(mean_val = mean(values), .groups = "drop") %>% ggplot(aes(x = month, y = mean_val, fill = metric)) + geom_bar(position = "dodge", stat = "identity") + theme_bw() + labs(title = "Weather metrics", x = "", y = "Mean Values")
错误原因解析
x = month报错:df_mod中没有月份列,且原分组仅按metric聚合,结果数据里不存在month字段,导致ggplot无法识别。.groups提示:summarise默认会保留部分分组层级,指定.groups = "drop"可完全取消分组,消除提示。- 长格式转换变量名错误:误用了不存在的
df_w_delays_mod,应替换为原始数据框df。
内容的提问来源于stack exchange,提问作者Bluetail
相关产品推荐
相关产品推荐

