Ich suche nach einer Möglichkeit, den Trennungsabstand zwischen Punkten paarweise zu berechnen und die Ergebnisse für jeden einzelnen Punkt in einem begleitenden verschachtelten Datenrahmen zu speichern.Paarweise Entfernungsberechnung verschachtelter Datenrahmen
Zum Beispiel habe ich diesen Datenrahmen (aus dem Kartenpaket), der Informationen über uns Städte einschließlich ihrer physischen Standorte enthält. Ich habe den Rest der Information verworfen und die Koordinaten in einem verschachtelten Datenrahmen verschachtelt. Ich beabsichtige, distHaversine()
aus dem Paket geosphere
zu verwenden, um diese Entfernungen zu berechnen.
library(tidyverse)
df <- maps::us.cities %>%
slice(1:20) %>%
group_by(name) %>%
nest(long, lat, .key = coords)
name coords
<chr> <list>
1 Abilene TX <tibble [1 x 2]>
2 Akron OH <tibble [1 x 2]>
3 Alameda CA <tibble [1 x 2]>
4 Albany GA <tibble [1 x 2]>
5 Albany NY <tibble [1 x 2]>
...(With 15 more rows)
Ich habe in die Verwendung der Karte Familie von Funktionen mit muate gekoppelt untersucht, aber ich habe eine schwierige Zeit. Die gewünschten Ergebnisse sind in Form wie folgt:
name coords sep_dist
<chr> <list> <list>
1 Abilene TX <tibble [1 x 2]> <tibble [19 x 2]>
2 Akron OH <tibble [1 x 2]> <tibble [19 x 2]>
3 Alameda CA <tibble [1 x 2]> <tibble [19 x 2]>
4 Albany GA <tibble [1 x 2]> <tibble [19 x 2]>
5 Albany NY <tibble [1 x 2]> <tibble [19 x 2]>
...(With 15 more rows)
Mit den sep_dist Tibbles etwas wie folgt aussehen:
location distance
<chr> <dbl>
1 Akron OH 1003
2 Alameda CA 428
3 Albany GA 3218
4 Albany NY 3627
5 Albany OR 97
...(With 14 more rows) -distances completely made up
Wo Ort der Punkt ist, dass (in diesem Fall Abilene) nach Namen verglichen wird, .
Vielen Dank für die Bereitstellung einer guten Alternative zu der Art und Weise, die ich mir vorgestellt hatte. Ich habe die ursprüngliche Antwort akzeptiert, weil sie besser zu den angegebenen Ergebnissen und Methoden passt, aber ich schätze die alternative Vorgehensweise. – Jamesm131
Ich stimme zu, dass Sie die Antworten basierend auf der Post akzeptieren sollten. Freut mich, Ihnen behilflich zu sein. – CPak