У меня есть набор данных с информацией о международных инвестициях в Европе и координатами о NUTS3. Для каждой инвестиции у меня есть город и координаты (lat1,long1). Я хочу вычислить расстояние от каждого города до каждого из NUTS 3, которые у меня есть --> E.G. Париж в Париж, Париж_Лион, Париж_Орли, Париж_Мейденхед и т. д. и т. д. Я хочу зациклить этот механизм для всех городов, которые у меня есть, поэтому в конце у меня есть матрица для каждого города, которая включает его расстояние до каждого NUTS. Я пытался использовать геосферу, но она дает мне только расстояние между строками.
summary(coordinate$NUTS_BN_ID)
summary(fdimkt$NUTS_BN_ID)
##merge dataset
df <- merge(fdimkt,coordinate, by="nutscode", all = FALSE)
View(df)
fix(df)
#install.packages("dplyr")
library(dplyr)
df %>% dplyr::rename(lat1= `_destination_latitude`, long1= `_destination_longitude` )
library(geosphere)
library(data.table)
#dt <- expand.grid.df(df,df)
setDT(df)[ , dist_km := distGeo(matrix(c(`_destination_latitude`, `_destination_longitude`), ncol = 2),
matrix(c(`lat2`, `long2`), ncol = 2))/1000]
summary(df$dist_km)
Это не сработало, потому что возвращает расстояние по строке, но на самом деле мне нужно расстояние от каждого города до всех координат NUTS3, которые у меня есть
Кто-нибудь может помочь мне с этим?
Я не уверен, как опубликовать свой dt, думаю, это может помочь получить больше предложений.
distm(df)
из пакета Geosphere. См. мой ответ здесь для примера: минимальное расстояние между широтой и долготой в нескольких кадрах данных"> stackoverflow.com/questions/58831578/. Также обратите внимание: пакет geosphere ожидает, что долгота будет первой колонкой, а широта — второй колонкой. - person Dave2e   schedule 23.11.2019