如何用geodist包计算患者居住地到医院的经纬度距离?
使用geodist包批量计算患者到医院的就诊距离
完全可以用geodist包实现批量计算,以下是具体步骤和代码:
操作步骤
- 先安装并加载
geodist包 - 定义医院的固定坐标
- 调用函数批量计算每个患者坐标到医院的距离
- 将计算结果合并到原数据框中
完整代码
# 首次使用需安装geodist包 install.packages("geodist") # 加载所需包 library(geodist) library(data.table) # 适配你的data.table格式数据 # 定义医院坐标:注意geodist默认输入顺序为「经度(longitude), 纬度(latitude)」 hospital_coords <- data.frame(longitude = -119.850, latitude = 36.840) # 批量计算距离:采用哈维正弦公式计算球面距离(单位:公里) d$distance_to_hospital <- geodist( x = d[, .(longitude, latitude)], y = hospital_coords, measure = "haversine", paired = TRUE # 开启一对一配对计算,确保每个患者对应医院的距离 ) # 查看最终结果 print(d)
代码说明
measure = "haversine":选择哈维正弦公式计算地球表面两点距离,结果默认单位为公里;若需要英里,可改用measure = "geodesic"并配合units = "mi"参数paired = TRUE:避免计算所有坐标组合的距离,只做患者-医院的一对一匹配计算- 原数据中的NA值(如Bedford的坐标)会自动返回NA,无需额外处理
示例结果
运行后数据框会新增distance_to_hospital列,示例输出如下:
major_city latitude longitude distance_to_hospital 1: Mountain View 37.39 -122.07 243.0752 2: Watsonville 36.90 -121.70 19.5064 3: Honolulu 21.31 -157.85 3906.7400 ... 9: Bedford NA NA NA 10: San Jose 37.27 -121.84 202.1415
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

