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

在R中添加Gender分类变量并绘制分组条形图

数据转换与分组条形图绘制方案

1. 生成Gender分类变量

你的数据集是宽格式(Male和Female为单独列),需要转成长格式来生成Gender分类变量,使用tidyverse包的pivot_longer函数即可完成:

library(tidyverse)

# 假设原数据集名为school_data
school_data_long <- school_data %>%
  pivot_longer(
    cols = c(Male, Female),  # 指定要转换的列
    names_to = "Gender",     # 新分类变量的名称
    values_to = "Count"      # 对应数值列的名称
  )

转换后的数据结构示例:

A tibble: 12 × 6

No Region District Name of School Gender Count

1 1 South East Gaborone Bokamoso CJSS Male 545
2 1 South East Gaborone Bokamoso CJSS Female 516
3 2 South East Gaborone Marang CJSS Male 550
4 2 South East Gaborone Marang CJSS Female 567

… with 8 more rows

2. 绘制分组条形图

根据需求,这里提供两种绘图方式:

方式一:按学校分性别展示

每个地区下的学校分别展示男女生人数:

ggplot(school_data_long, aes(x = Region, y = Count, fill = Gender)) +
  geom_col(position = "dodge") +  # 设置分组条形布局
  geom_text(
    aes(label = Count), 
    position = position_dodge(width = 0.9), 
    vjust = -0.5  # 数值标签位于条形上方
  ) +
  labs(
    title = "分性别学生人数(按地区)",
    x = "地区",
    y = "学生人数",
    fill = "性别"
  ) +
  theme_minimal()

方式二:按地区汇总后展示

先汇总每个地区的男女生总人数,再绘图:

# 先汇总数据
school_data_summary <- school_data_long %>%
  group_by(Region, Gender) %>%
  summarise(Total_Count = sum(Count), .groups = "drop")

# 绘制汇总后的分组条形图
ggplot(school_data_summary, aes(x = Region, y = Total_Count, fill = Gender)) +
  geom_col(position = "dodge") +
  geom_text(
    aes(label = Total_Count), 
    position = position_dodge(width = 0.9), 
    vjust = -0.5
  ) +
  labs(
    title = "地区分性别总学生人数",
    x = "地区",
    y = "总人数",
    fill = "性别"
  ) +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:35:21