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

R语言如何通过ID匹配将站点坐标信息合并到骑行服务数据框中

高效实现方案

提供两种常用的高效实现方案,均为向量化操作,远快于for循环,适合大样本量场景:

基础R实现(无需额外依赖包)

你已经用到的match本身就是高效的向量化函数,拿到索引后直接提取对应列赋值即可:

# 匹配起点ID对应的stations行索引
orig_idx <- match(jan2020$Origen_Id, stations$id)
# 新增起点经纬度列
jan2020$Lat_Orig <- stations$Latitude[orig_idx]
jan2020$Lon_Orig <- stations$Longitude[orig_idx]

# 匹配终点ID对应的stations行索引
dest_idx <- match(jan2020$Destiny_Id, stations$id)
# 新增终点经纬度列
jan2020$Lat_Des <- stations$Latitude[dest_idx]
jan2020$Long_Des <- stations$Longitude[dest_idx]

dplyr实现(写法更简洁易维护)

如果可以使用tidyverse生态的工具,两次左关联即可完成需求,代码可读性更高:

library(dplyr)

jan2020_new <- jan2020 %>%
  # 关联起点站点的经纬度
  left_join(stations %>% select(id, Latitude, Longitude), by = c("Origen_Id" = "id")) %>%
  rename(Lat_Orig = Latitude, Lon_Orig = Longitude) %>%
  # 关联终点站点的经纬度
  left_join(stations %>% select(id, Latitude, Longitude), by = c("Destiny_Id" = "id")) %>%
  rename(Lat_Des = Latitude, Long_Des = Longitude)

注意:如果jan2020中存在stations里没有的站点ID,对应经纬度会自动填充为NA,符合数据处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:01