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

使用R的ggmap根据城市和州列生成经纬度时匹配错误

解决地理编码匹配错误的方案

问题原因

你写的代码没把city和state拼成完整地址字符串,导致geocode函数优先匹配了名气更大的科罗拉多州丹佛市,而不是德克萨斯州的Denver City。

具体解决方法

  1. 拼接完整地址再编码
    把城市和州合并成城市, 州的格式,明确告诉函数要找的具体地点:

    # 生成完整地址列
    sample_data$full_address <- paste(sample_data$city, sample_data$state, sep = ", ")
    # 对唯一完整地址做地理编码
    lonlat <- geocode(unique(sample_data$full_address), method = "census")
    # 把结果合并回原数据
    locations <- merge(sample_data, lonlat, by.x = "full_address", by.y = "address")
    
  2. 修正参数传递方式
    原代码里unique的用法错了,它只能接受一个向量。可以先按城市和州去重,再把这两个列一起传给geocode:

    # 按city和state去重
    unique_cities <- unique(sample_data[, c("city", "state")])
    # 传递完整的地址组件
    lonlat <- geocode(location = unique_cities, method = "census", output = "latlon")
    # 合并回原数据集
    locations <- merge(sample_data, lonlat, by = c("city", "state"))
    
  3. 检查结果是否正确
    处理完可以手动核对Denver City, TX的坐标:

    tx_denver <- locations[locations$city == "Denver City" & locations$state == "TX", ]
    print(tx_denver[, c("city", "state", "lon", "lat")])
    

    正确的坐标应该是经度约-102.633,纬度约32.324。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:49