2016-05-09 6 views
2

私は距離を見つけるために関数sqrt((x1-x0)^2 + (y1-y0)^2)を知っています。しかし、私は緯度と経度の2つの列を持ち、4つの最も近い郡の間の分散を求めたいと思います。 ループが必要ですか? 私はパーセンテージでもう一つの列を持っています。各郡にはパーセンテージがあります。だから、私は最も近い郡の間のパーセントの分散を見つける必要があります。私は緯度と経度がRの場合、どのように米国郡の最も近い郡を見つけることができますか?

+1

ようこそStackOverflow! [MCVE]を提供してください –

+0

ここでは「分散」とはどういう意味ですか?統計的分散?もしそうなら、どの郡の数量ですか? – alistaire

+0

飛行機のユークリッド距離を使用していますが、球面上の距離は異なります。 'geosphere'パッケージにはこのための関数があります(例えば、[このSO答え](http://stackoverflow.com/a/32364246/496488)を参照してください)。独自の関数をロールバックすることもできます。[here](http://www.r-bloggers.com/great-circle-distance-calculations-in-r/)および[ここ](http://stackoverflow.com)を参照してください。/questions/29585759 /計算距離 - 緯度 - 経度 - 座標 - r)。 – eipi10

答えて

2

もちろん、問題をループする必要はありません。

代わりにこれを行うには、あなたは次のようにearth.dist機能を作成することによって、より良いだろう:

earth.dist <- function (long1, lat1, long2, lat2) 
{ 
rad <- pi/180 
a1 <- lat1 * rad 
a2 <- long1 * rad 
b1 <- lat2 * rad 
b2 <- long2 * rad 
dlon <- b2 - a2 
dlat <- b1 - a1 
a <- (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2 
c <- 2 * atan2(sqrt(a), sqrt(1 - a)) 
R <- 6378.145 
d <- R * c 
return(d) 
} 

これとすべての国の間で計算を組み合わせることにより、あなたはそれぞれの国のためにリストを注文することができ距離を上げて、その後分散を計算します。 あなたが探している結果に従います。

この機能的な説明が役立ちます。

+0

私は米国の国のみを使用しています。米国の国には州があり、州には多くの郡があります。 – bill89

+0

この場合、代わりに郡を使うことができると思います。データなしの私のベストトライは次のステップに従っています: 1.各郡について、eath_dist + lapplyを使用してすべての距離を計算します。 2. 1行につき最初の4行だけをフェッチします。 3.その後の距離の分散を計算します。 –

関連する問題