2016-03-31 4 views
-1

I einen Datenrahmen aufweisen, wie untenWie max Wert aus einer Spalte auf einem gruppierten Ausgangsspalt in r basierend finden

 X  Y  Z   cluster 
245 256882.0 4110945 426.50   20 
246 256882.7 4110945 426.42   57 
247 256883.9 4110945 429.30   114 
248 256884.6 4110945 428.93   114 
249 256885.4 4110945 429.50   98 
250 256886.1 4110945 429.67   33 

Der Datenrahmen wird mit 4 Säulen mit x, y, z und gruppierte Ausgang gezeigt. xy sind die Koordinaten und z ist die entsprechende Höhe. Ich gruppierte die gesamten Datenpunkte mit Kmeans in 176 Cluster. Jetzt möchte ich maximalen Z-Wert von jedem Cluster nehmen. Zum Beispiel muss ich von Cluster-Wert 1 den maximalen z-Wert identifizieren und muss auch die entsprechenden x- und y-Werte nehmen. Wie kann ich das machen?

+0

Bitte schreiben Sie keine Bilder von Daten, sind sie nutzlos darüber hinaus für das Kopieren und Einfügen und Ihre Frage zu beantworten. – thelatemail

+0

Entschuldigung dafür. was soll ich machen? Soll ich den Datensatz hochladen? – bibinwilson

+0

Sie könnten "Kopf (Daten)", d. H. Eine kleine Probe der Daten enthalten. :) – Therkel

Antwort

1

Sie dplyr verwenden können:

library(dplyr) 

data %>% 
    group_by(fit.cluster) %>% 
    summarise(Z = max(Z)) %>% 
    inner_join(data) 

oder:

df %>% 
    group_by(fit.cluster) %>% 
    filter(Z == max(Z)) 
+1

Ich würde mit etwas weit weniger einfach antworten, das ist ein guter Weg, um mit diesem Problem umzugehen. Aber wenn Sie das Maximum Z innerhalb jedes Clusters kennen, wie stellen Sie das X und Y wieder her, die mit dem Z verknüpft sind? –

+0

Ich habe den Code bearbeitet – vitor

+0

'group_by (fit.cluster)%>% slice (which.max (Z))' vielleicht? Ich benutze dplyr nicht oft, aber ich denke, das könnte funktionieren, um die Notwendigkeit zu vermeiden, wieder beitreten zu müssen. – thelatemail

Verwandte Themen