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

R语言两次left_join匹配坐标产生重复值问题咨询

重复值产生原因

原代码仅用郊区作为唯一连接键,但df_2中存在同一郊区对应多个不同邮编坐标的记录,单键匹配会拉取该郊区下所有邮编的匹配结果,直接产生笛卡尔积式的重复行。
你提出的郊区+邮编双字段同时匹配的思路完全正确,双字段组合才是定位对应坐标的精准唯一键,从根源上避免无意义的错配和重复。

修正后代码

补全两次连接的匹配条件,同时加后缀区分买卖方的坐标列,避免列名冲突:

library(dplyr)

result <- df_1 %>%
  # 匹配买方坐标:买方郊区+买方邮编双字段对应df_2的郊区+邮编
  left_join(
    df_2,
    by = c("buyer_suburb" = "suburbs", "buyer_postcode" = "postcode")
  ) %>%
  # 匹配卖方坐标:卖方郊区+卖方邮编双字段对应df_2的郊区+邮编
  left_join(
    df_2,
    by = c("seller_suburb" = "suburbs", "seller_postcode" = "postcode"),
    suffix = c("_buyer", "_seller")
  )
效果说明

运行后返回的结果行数和原始df_1完全一致,无多余重复行:

  • 列coordinates_buyer为匹配到的买方对应坐标
  • 列coordinates_seller为匹配到的卖方对应坐标
    所有坐标完全和邮编一一对应,不会出现同郊区不同邮编的错配问题,比如Sally的买方邮编008会精准匹配到Sandy邮编008对应的坐标0.02, 8.00,不会错配到同属Sandy的001邮编坐标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:18:18