各行が家を表し、各列はステーションを表す場合は、単純に計算することができ各行の最小値を求める。それは、座標
に基づいて距離を計算しますので、
geosphere
パッケージには、あなたが、私は、距離関数distHaversine
注文それをこの方法最初の経度を入れていることがわかります、ここで有用です。
read about the package hereを入力してください。私はこの例の指示にちょうど従った。
例:
cities <- data.frame(city = c('Miami', 'Atlanta', 'New York', 'Los Angeles'),
lon = c(-80.1917, -84.387982, -74.005941, -118.243685),
lat = c(25.76168, 33.748995, 40.712784, 34.052234),
stringsAsFactors = FALSE)
stations <- data.frame(station = c('Orlando', 'Richmond', 'Nashville'),
lon = c(-81.379236, -77.436048, -86.781602),
lat = c(28.538335, 37.540725, 36.162664),
stringsAsFactors = FALSE)
cities
# city lon lat
# 1 Miami -80.19170 25.76168
# 2 Atlanta -84.38798 33.74900
# 3 New York -74.00594 40.71278
# 4 Los Angeles -118.24368 34.05223
stations
# station lon lat
# 1 Orlando -81.37924 28.53834
# 2 Richmond -77.43605 37.54073
# 3 Nashville -86.78160 36.16266
library(geosphere)
dist_mat <- mapply(function(lon, lat, cty) distHaversine(c(lon, lat), cty), stations[,2], stations[,3], list(cities[-1]))
min_dist <- apply(dist_mat, 1, which.min)
cbind(city=cities[,1], closest_station=stations[min_dist,1])
# city closest_station
# [1,] "Miami" "Orlando"
# [2,] "Atlanta" "Nashville"
# [3,] "New York" "Richmond"
# [4,] "Los Angeles" "Nashville"
私はpyqtree pythonパッケージを検索していただきありがとうございますが、私は私の場合に有用なものは何も見つかりませんでした。私に詳細を教えてもらえますか?ありがとうございました – Qing