Ich habe einen SpatialPointsDataFrame, mit dem ich in R arbeite. Ich möchte dem Datenrahmen einen neuen Vektor hinzufügen, der für jeden Punkt den Abstand zum nächstgelegenen anderen Punkt im SpatialPointsDataFrame enthält. Ich habe mir knearneigh im spdep-Paket sowie spDistsN1 und spDists im sp-Paket angesehen, aber keiner von beiden gibt mir genau das, was ich will. Alle diese Punkte befinden sich in ONE SpatialPointsDataFrame.
r
point
nearest-neighbor
sp
Amadou Kone
quelle
quelle
Antworten:
Es gibt verschiedene Möglichkeiten, wie Sie dies in R angehen können, einschließlich spDists in sp und gDistance in rgeos. Ein effizienter Weg, der auf mehrere kNN-IDs und Entfernungen erweiterbar ist, ist die Verwendung von spdep.
Ein weiterer, sehr schneller Weg ist das Nabor-Paket. Da die Entfernung zusammen mit der Nachbar-ID zurückgegeben wird, können Sie beide gleichzeitig hinzufügen. Die Funktion nabor :: knn gibt Selbstnachbarn zurück. Sie müssen also k auf> = 2 setzen und die erste Spalte in den resultierenden Matrizen löschen. Ein Vorteil hierbei ist, dass Sie, solange die Matrizen dieselbe Dimension haben, Nachbarn aus denselben oder unabhängigen Daten erhalten können.
quelle