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

如何基于Key合并迁移流入流出数据集(无需硬编码)

解决方案

可以用dplyr包实现这个合并需求,全程无需硬编码任何县名、州名、FIPS或年份,完全通过Key字段关联处理,具体步骤如下:

library(dplyr)

# 第一步:预处理两个数据集,统一字段命名
inflow_clean <- inflow_df %>%
  rename(
    FIPS = Origin_FIPS,
    State = Origin_StateName,
    County = Origin_Place,
    Inflow = InIndividuals
  ) %>%
  select(Key, County, State, FIPS, Inflow, FiscalYear, Year)

outflow_clean <- outflow_df %>%
  rename(
    FIPS = Dest_FIPS,
    State = Dest_StateName,
    County = Dest_Place,
    Outflow = OutIndividuals
  ) %>%
  select(Key, County, State, FIPS, Outflow, FiscalYear, Year)

# 第二步:按Key做全连接,自动填充缺失值为NA
merged_df <- full_join(inflow_clean, outflow_clean, by = "Key") %>%
  # 合并重复信息列(同一Key对应的县/州/FIPS/年份信息唯一,取非NA值)
  mutate(
    County = coalesce(County.x, County.y),
    State = coalesce(State.x, State.y),
    FIPS = coalesce(FIPS.x, FIPS.y),
    FiscalYear = coalesce(FiscalYear.x, FiscalYear.y),
    Year = coalesce(Year.x, Year.y)
  ) %>%
  # 保留目标列并调整顺序
  select(Key, County, State, FIPS, Inflow, Outflow, FiscalYear, Year)

# 查看最终结果
print(merged_df)

代码说明

  • 预处理阶段:将两个数据集中语义相同的字段统一命名(比如把Origin_FIPS和Dest_FIPS统一改为FIPS),同时筛选出核心字段,避免后续合并时出现冗余列。
  • 全连接操作:使用full_join基于Key合并两个数据集,自动保留所有观测记录,不存在的对应值会自动填充为NA。
  • 合并重复列:同一Key对应的县、州、FIPS、年份等信息是唯一的,用coalesce函数取两个列中的非NA值,确保这类信息完整且无重复。
  • 调整列顺序:最后将列调整为你需要的目标格式。

运行上述代码后,得到的结果将完全匹配你给出的期望格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:30:50