2016-07-12 18 views
0

Ich möchte basierend auf der euklidischen Entfernung berechnen, zu welchem ​​Cluster ein Punkt gehört.Zuweisen von Clustern zu Standorten basierend auf der euklidischen Entfernung

clusters xcor  ycor 
1   64.99206 78.48413 
2   1102.00000 2466.67500 
3   1598.11060 1298.10138 
4   499.86441 736.72881 

Lage des sind:

location xcor ycor 
1   511 78 
2   1354 2466 
3   511 1298 

So sollte es prüfen für alle Standorte, an denen Cluster auf dem kürzesten Weg auf Basis gehört. Gibt es dafür eine Funktion/ein Paket, das dies leicht vorformulieren kann?

Antwort

0

Hier ist eine Lösung mit apply() und which.min():

apply(locs,1L,function(x) which.min(sqrt((x['xcor']-clus$xcor)^2+(x['ycor']-clus$ycor)^2))); 
## [1] 1 2 4 

Daten

locs <- data.frame(location=c(1L,2L,3L),xcor=c(511L,1354L,511L),ycor=c(78L,2466L,1298L)); 
clus <- data.frame(clusters=c(1L,2L,3L,4L),xcor=c(64.99206,1102,1598.1106,499.86441),ycor=c(
78.48413,2466.675,1298.10138,736.72881)); 
Verwandte Themen