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

如何在R中合并行并重塑数据框以绘制堆叠条形图

解决R数据框转宽格式问题(适配堆叠条形图)

你当前代码生成的是长格式数据(gender、prize_type、计数),要转成你需要的宽格式(gender、book、career作为列),得用tidyr包的pivot_wider()函数——之前用filter行不通是因为filter是用来筛选行的,没法实现列格式转换。

完整修正代码:

library(tidyverse) # 确保加载dplyr和tidyr工具包

# 第一步:生成带命名计数列的分组统计,同时取消分组避免后续干扰
prize_type_per_gender <- literary_cleaned %>%
  group_by(gender, prize_type) %>%
  summarize(count = n(), .groups = "drop") # 给计数列命名为count,.groups="drop"清理分组标记

# 第二步:将长格式转成目标宽格式
prize_wide <- prize_type_per_gender %>%
  pivot_wider(
    names_from = prize_type, # 用prize_type的取值(book/career)作为新列名
    values_from = count,     # 用count列的数值填充新列
    values_fill = 0          # 若某个gender无对应奖项,用0填充避免出现NA
  )

结果说明:

运行后prize_wide的结构完全符合你的需求:

  • 第一列是gender(字符型)
  • 后续列为book和career(数值型,对应各性别两类奖项的数量)

堆叠条形图快速示例(可选):

用转换后的宽表直接绘图的话,可参考ggplot代码:

ggplot(prize_wide, aes(x = gender)) +
  geom_col(aes(y = book, fill = "书籍类奖项"), position = "stack") +
  geom_col(aes(y = career, fill = "职业类奖项"), position = "stack") +
  labs(x = "性别", y = "获奖数量", fill = "奖项类型")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:27:08