【问题标题】:R calculate distance in miles using 2 latitude & 2 longitude vectors in a data frame for 18k rowsR使用18k行数据框中的2个纬度和2个经度向量计算距离(以英里为单位)
【发布时间】:2021-05-11 08:11:55
【问题描述】:

我有一个 6 列的数据框:

- location id 1
- latitude 1
- longitude 1
- location id 2
- latitude 2
- longitude 2

我想计算两个点之间的距离(以英里为单位)并将其添加为新列。我正在努力寻找能够做到这一点的功能。我找到的最接近的是:https://blog.exploratory.io/calculating-distances-between-two-geo-coded-locations-358e65fcafae,但它失败了,因为它找不到名为“list_extract”的函数。

以下是数据示例:

structure(list(df1_location_number = c(5051, 5051, 5051, 5051, 
5051), df1_Latitude = c(34.7171375, 34.7171375, 34.7171375, 34.7171375, 
34.7171375), df1_Longitude = c(-118.9107316, -118.9107316, -118.9107316, 
-118.9107316, -118.9107316), df2_location_number = c(3051, 3085, 
3022, 3041, 3104), df2_Latitude = c(34.7171375, 39.53404, 31.626788, 
35.247982, 39.33425), df2_Longitude = c(-118.9107316, -93.292373, 
-88.330116, -84.804119, -123.713064)), row.names = c(NA, 5L), class = "data.frame")

有什么建议吗?

【问题讨论】:

    标签: r geospatial distance latitude-longitude


    【解决方案1】:

    library(geodist) 是一个用于计算距离的好且快速的库,geodist_vec() 函数被矢量化以处理数据的“列”

    library(geodist)
    
    ## calcualte distance in metres using Haversine formula
    df$dist_m <- geodist::geodist_vec(
      x1 = df$df1_Longitude
      , y1 = df$df1_Latitude
      , x2 = df$df2_Longitude
      , y2 = df$df2_Latitude
      , paired = TRUE
      , measure = "haversine"
    )
    
    ## convert to miles
    df$dist_miles <- df$dist_m / 1609
    
    #   df1_location_number df1_Latitude df1_Longitude df2_location_number df2_Latitude df2_Longitude    dist_m dist_miles
    # 1                5051     34.71714     -118.9107                3051     34.71714    -118.91073       0.0     0.0000
    # 2                5051     34.71714     -118.9107                3085     39.53404     -93.29237 2327593.8  1446.6089
    # 3                5051     34.71714     -118.9107                3022     31.62679     -88.33012 2859098.6  1776.9413
    # 4                5051     34.71714     -118.9107                3041     35.24798     -84.80412 3095858.6  1924.0886
    # 5                5051     34.71714     -118.9107                3104     39.33425    -123.71306  667849.7   415.0713
    
    
    

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 2010-11-18
      • 2021-05-10
      • 2011-03-03
      相关资源
      最近更新 更多