如何在R中重构秘鲁人口普查数据框以生成指定汇总表?
重构秘鲁人口普查数据为指定汇总表的R实现方法
前置准备
先确保安装并加载数据处理常用的dplyr和tidyr包:
# 首次使用需安装 install.packages(c("dplyr", "tidyr")) # 加载包 library(dplyr) library(tidyr)
数据重构步骤
假设你的原始数据框df包含字段:District(地区)、Occupation_category(职业类别)、Gender(性别标识,如"Female"/"Male")、Count(统计人数)。请根据实际数据调整以下代码中的类别标识和列名:
summary_table <- df %>% # 1. 按地区分组,计算各地区总从业者数 group_by(District) %>% mutate(Total_workers = sum(Count)) %>% # 2. 筛选科技智力类从业者数据(替换为你数据中对应的职业类别值) filter(Occupation_category %in% c("Science", "Technology", "Intellectual")) %>% # 3. 计算各地区科技智力从业者总数 mutate(total_tech_intel = sum(Count)) %>% # 4. 筛选女性科技智力从业者数据(替换为你数据中女性的标识) filter(Gender == "Female") %>% # 5. 计算两个占比指标 mutate( `女性科技智力从业者占比` = Count / total_tech_intel, `科技智力从业者占比` = total_tech_intel / Total_workers ) %>% # 6. 保留目标字段并去重(每个地区仅留一行汇总数据) select(District, `女性科技智力从业者占比`, `科技智力从业者占比`, Total_workers) %>% distinct() %>% ungroup()
补充说明
- 若需将占比转为百分比格式,可修改
mutate部分:mutate( `女性科技智力从业者占比` = paste0(round(Count / total_tech_intel * 100, 2), "%"), `科技智力从业者占比` = paste0(round(total_tech_intel / Total_workers * 100, 2), "%") ) - 若要保留无科技智力从业者的地区并填充0,可在开头添加
complete补全缺失组合:df %>% complete(District, Occupation_category, Gender, fill = list(Count = 0)) %>% # 后续步骤同上
内容的提问来源于stack exchange,提问作者José Carlos Rojas
相关产品推荐
相关产品推荐

