gpt4 book ai didi

r - 使用 dplyr::mutate 计算到数据点的地理距离

转载 作者:行者123 更新时间:2023-12-04 11:30:36 25 4
gpt4 key购买 nike

我正在尝试将 R 与 一起使用tidyverse 包并且无法将函数应用于我的数据。我的数据包括纬度/经度坐标,我想计算从每个位置(我的数据框的行)到引用位置的距离。我正在尝试使用 geosphere::distm 功能。

library(tidyverse)
library(geosphere)

my_long <- 172
my_lat <- -43

data <- data %>% rowwise() %>% mutate(
dist = distm(c(myLong, myLat), c(long, lat), fun=distHaversine) # this works
)

我使用 rowwise() 让它工作了功能,如上,但已弃用,所以我想知道如何使用现代 tidyverse ,即 dplyrpurrr ,我想,例如,我最接近的是使用 map2:
my_distm <- function(long1, lat1, long2, lat2)
distm(c(long1, lat1), c(long2, lat2), fun=distHaversine)

data <- data %>% mutate(
dist = map2(long, lat, my_distm, my_long, my_lat) # this doesn't
)

到目前为止,我失败了。

最佳答案

您可以使用 distHaversine而不是 distm , 和 cbind :

data %>%  mutate(dist = distHaversine(cbind(myLong, myLat), cbind(long, lat)))

示例数据:
myLong = 172
myLat = -43
long = c(180,179,179)
lat = c(-40,-41,-40)
data = data.frame(myLong,myLat,long,lat)

结果如下:
  myLong myLat long lat     dist
1 172 -43 180 -40 745481.0
2 172 -43 179 -41 620164.8
3 172 -43 179 -40 672076.2

关于r - 使用 dplyr::mutate 计算到数据点的地理距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com