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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:20:32