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

R语言实现按城市、年份、职业分组的种族占比统计需求

高效计算分组种族占比及可视化方案

首先修正你的可复现数据代码(原代码中Frequency列是列表格式,需调整为数值列以适配后续计算):

set.seed(4)
Race <- rep(c("Black", "White"), times = 4)
Job <- rep(c("BrickLayer","Cleaner"), each = 4)
City <- rep(c("New York City","New York City", "New Haven", "New Haven"), times = 4)
Year <- rep(c("2018","2019"), each = 8)
# 生成与数据框行数匹配的数值型Frequency列
Frequency <- sample(100:542, 16, replace = TRUE)

TestFrame <- data.frame(Race, Job, City, Year, Frequency)

1. 批量计算分组种族占比

使用dplyr包的分组计算功能,一次完成所有分组的占比统计,无需手动重复操作:

library(dplyr)

# 按城市、年份、职业分组,计算每个种族的占比
race_proportion_table <- TestFrame %>%
  group_by(City, Year, Job) %>%
  mutate(
    group_total = sum(Frequency),  # 计算每组总人数
    race_prop = Frequency / group_total  # 计算种族占比
  ) %>%
  select(Race, Job, City, Year, race_prop) %>%
  ungroup()

# 查看结果(格式完全匹配需求)
print(race_proportion_table, n = 16)

执行后会直接生成你需要的表格结构,所有分组的占比自动计算完成,无论数据量多大都能高效处理。

2. 可视化种族占比随年份变化

基于生成的占比表格,用ggplot2快速绘制多维度对比图:

library(ggplot2)
library(scales)

# 堆叠柱状图:展示不同城市+职业组合下的年度种族占比
ggplot(race_proportion_table, aes(x = Year, y = race_prop, fill = Race)) +
  geom_col(position = "stack", width = 0.7) +
  facet_grid(City ~ Job) +  # 按城市和职业拆分子图
  scale_y_continuous(labels = percent_format(accuracy = 1)) +  # 转换为百分比显示
  labs(title = "种族占比随年份变化", y = "占比", x = "年份") +
  theme_minimal()

# 折线图:更清晰展示占比的年度变化趋势
ggplot(race_proportion_table, aes(x = Year, y = race_prop, color = Race, group = Race)) +
  geom_line(linewidth = 1) +
  geom_point(size = 3) +
  facet_grid(City ~ Job) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  labs(title = "种族占比年度变化趋势", y = "占比", x = "年份") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:54:23