如何使用R重塑非时变电力服务商与经营区县关联数据集
R数据重塑解决方案:宽格式服务商区县表转区县核心结构
不需要编写循环,使用tidyr包的pivot_longer函数即可快速完成你需要的重塑操作,完整操作步骤如下:
1. 核心重塑代码
# 加载依赖包 library(tidyverse) # 完成数据转换+基础清洗 county_utility <- utility_county %>% # 自动识别所有County开头的列,转换为长格式 pivot_longer( cols = starts_with("County"), names_to = "county_order", values_to = "county_name" ) %>% # 过滤掉服务商未覆盖的空区县行 filter(county_name != "") %>% # 去除区县名前后多余空格,解决示例中"Asotin "这类脏数据问题 mutate(county_name = str_squish(county_name)) %>% # 可选:删除不需要的原始County列序号字段 select(-county_order)
执行后得到的county_utility表每一行对应一组「区县-电力服务商」匹配关系,已经保留了InData、UtilityType所有原始字段。
2. 区县维度聚合统计(可选)
如果需要直接生成以区县为核心、汇总所有服务商和缺失度的结果,可以继续执行以下代码:
county_summary <- county_utility %>% group_by(county_name) %>% summarise( # 合并当前区县所有服务商名称,需要存列表格式可以替换为list(UtilityName) all_utilities = str_c(UtilityName, collapse = "、"), # 区县内总服务商数量 total_utility_cnt = n(), # 匹配到另一个数据集的服务商数量 matched_utility_cnt = sum(InData), # 计算数据缺失度 missing_rate = scales::percent((total_utility_cnt - matched_utility_cnt)/total_utility_cnt, accuracy = 0.1) )
输出的county_summary就是你需要的目标结构,每一行对应一个区县的完整统计信息。
内容的提问来源于stack exchange,提问作者ClaireR
相关产品推荐
相关产品推荐

