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

如何用极简代码实现R数据聚合计算并生成ggplot分组柱状图

解决方案

使用tidyverse套件可以用极精简的代码完成需求,首先加载依赖包:

library(tidyverse)

完整实现代码

1. 生成要求的汇总表

sum_df <- as.data.frame(d) %>%
  pivot_longer(b:c, names_to = "col", values_to = "count") %>%
  count(a, col, wt = count, name = "count")

生成的sum_df结构完全匹配要求:

# A tibble: 4 × 3
      a col   count
  <dbl> <chr> <dbl>
1  2010 b       110
2  2010 c       100
3  2015 b       270
4  2015 c        80

2. 绘制并列柱状图

ggplot(sum_df, aes(x = factor(a), y = count, fill = col)) +
  geom_col(position = "dodge", width = 0.8) +
  labs(x = "年份", y = "count", fill = "字段")

如果不需要单独存储汇总表,可以用链式操作一步出图,代码更短:

as.data.frame(d) %>%
  pivot_longer(b:c, names_to = "col", values_to = "count") %>%
  count(a, col, wt = count, name = "count") %>%
  ggplot(aes(factor(a), count, fill = col)) +
  geom_col(position = "dodge")

关键逻辑说明

  • 原数据d是cbind生成的矩阵,先转成数据框适配tidyverse函数逻辑
  • pivot_longer一步完成宽表转长表,直接生成要求的col、count字段
  • 用count()替代group_by()+summarise()完成分组求和,代码更精简,参数wt指定求和的数值列
  • 绘图时将a转为因子避免x轴出现2010-2015之间无数据的年份,position = "dodge"实现同一年份两个柱子并列展示

内容的提问来源于stack exchange,提问作者shokoufa zeynali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:39:03