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

R/dplyr:宽长格式表关联方法,合并地址表与社区区域统计数据

实现方案

优先使用dplyr搭配stringr处理,核心思路是将长表的统计数据按维度拆分后分别关联,全程符合tidyverse语法规范,逻辑清晰易维护。

步骤1:加载依赖包

library(dplyr)
library(stringr)

步骤2:预处理统计长表

首先修正样例数据中type列的拼写错误,提取去掉前缀的纯ID,再按维度拆分为社区、片区两个统计子表:

# 统一清洗统计长表
stat_clean <- neighborhood_area_data %>%
  # 修正type列拼写错误
  mutate(type = case_when(
    str_detect(type, "Neigh") ~ "Neighborhood",
    TRUE ~ "Area"
  )) %>%
  # 提取去除前缀的可关联ID
  mutate(join_id = str_remove(neighborhood_and_area, "^NEIGH_|^AREA_"))

# 拆分出社区维度统计表,重名字段避免关联后冲突
neigh_stat <- stat_clean %>%
  filter(type == "Neighborhood") %>%
  select(
    county, join_id,
    neighborhood_residents = Number_of_Residents,
    neighborhood_avg_age = Average_Age
  )

# 拆分出片区维度统计表,重名字段避免关联后冲突
area_stat <- stat_clean %>%
  filter(type == "Area") %>%
  select(
    county, join_id,
    area_residents = Number_of_Residents,
    area_avg_age = Average_Age
  )

步骤3:两次左连合并到地址表

通过county+对应维度ID双字段关联,保证跨县重名ID不会关联错误:

final_result <- adresses %>%
  # 关联社区统计数据
  left_join(neigh_stat, by = c("county" = "county", "neighborhood" = "join_id")) %>%
  # 关联片区统计数据
  left_join(area_stat, by = c("county" = "county", "area" = "join_id"))

方案优势

  • 双字段关联规避了不同县存在同名社区/片区的关联错误问题
  • 字段提前重命名避免关联后混淆社区、片区的统计指标
  • 单步操作粒度小,排查匹配失败的异常值更方便
  • 全程使用dplyr原生语法,性能适配百万级以上的地址数据量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:05