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

如何在R中批量实现季度就业占比计算及抑制项占比判断

R中就业数据年度重复处理方案

需求

完成三项可年度重复执行的数据处理任务:

  • 新增季度总就业列
  • 新增区域就业相对占比列(需显示数值,如0.0115而非2/173)
  • 判断suppress=0的就业总和是否超过该季度总就业的50%,生成判断列

样本数据

area <- c("001","005","007","009","011","013","015","017","019","021","023","027","033","001","005","007","009","011","013","015","017","019","021","023","027","033")
year <- c("2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021","2021")
qtr <- c("01","01","01","01","01","01","01","01","01","01","01","01","01","02","02","02","02","02","02","02","02","02","02","02","02","02")
employment <- c(2,4,6,8,11,10,12,14,16,18,20,22,30,3,5,8,9,12,9,24,44,33,298,21,26,45)
suppress <- c(0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0)

testitem <- data.frame(year,qtr, area, employment, suppress)

期望结果

  • 2021年Q1总就业173,suppress=1的就业总和24,未达总就业50%,50percent列显示TRUE
  • 2021年Q2总就业537,suppress=1的就业总和310,超过总就业50%,50percent列显示FALSE
  • 区域占比为数值形式(如2/173对应0.0115)

示例片段:

year    qtr   area     employment   suppress     area_ratio  50percent
2021     01     001        2           0          0.0115       TRUE
2021     01     005        4           0          0.0231       TRUE
.....
2021     02     001        3           0          0.0056       FALSE
2021     02     005        5           0          0.0093       FALSE

实现代码(dplyr)

使用dplyr进行分组计算,代码可直接复用处理年度数据:

# 安装并加载dplyr包(首次运行需安装)
# install.packages("dplyr")
library(dplyr)

processed_data <- testitem %>%
  group_by(year, qtr) %>%
  mutate(
    # 季度总就业
    total_employment = sum(employment),
    # 区域就业占比(保留4位小数)
    area_ratio = round(employment / total_employment, 4),
    # 判断suppress=0的就业总和是否超过季度总就业的50%
    50percent = sum(employment[suppress == 0]) > 0.5 * total_employment
  ) %>%
  ungroup()

# 查看处理后的数据
print(processed_data)

代码解释

  • group_by(year, qtr):按年份和季度分组,确保所有计算基于单季度数据
  • total_employment = sum(employment):计算每个季度的总就业人数
  • area_ratio = round(employment / total_employment, 4):计算区域就业占比并保留4位小数
  • 50percent = sum(employment[suppress == 0]) > 0.5 * total_employment:筛选suppress=0的就业数据求和,与季度总就业的50%比较,返回布尔值
  • ungroup():取消分组,恢复普通数据框格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:50:40