2017-11-13 7 views
0

Ich arbeite gerade an einem Programm, das die Blattfläche analysiert und diese mit der Position des Blattes innerhalb des Clusters vergleicht (dh es ist das erste Blatt, drittes, letztes usw .) und analysiere die Beziehung zwischen Position, Fläche, Masse und mehr. Ich habe eine Datenbank mit ungefähr 5.000 Blättern und 1.000 Clustern und da kommt das Problem auf.Partitionierung von Daten in 'R' basierend auf der Datengröße

Cluster kommen in unterschiedlicher Anzahl, die meisten haben 5 Blätter, aber einige haben 2, 8 oder irgendwo dazwischen. Ich brauche eine Möglichkeit, die Cluster nach Nummer im Cluster zu trennen, so dass das Programm keine Cluster mit 3 Blättern behandelt, sondern die gleichen wie Cluster mit 7. Mein .csv hat jedes Blatt einzeln eingegeben, so dass man einfach manuell verschiedene Sätze eingeben kann .

Ich bin ziemlich neu bei 'R', so dass ich hier eine offensichtliche Fähigkeit vermissen könnte, aber jede Hilfe würde sehr geschätzt werden. Ich verstehe auch, dass das ziemlich verwirrend ist, also bitte fühlen Sie sich frei, mit klärenden Fragen zu antworten.

Vielen Dank im Voraus.

+0

wo ist Ihr Code? – Ibo

+0

Ich meine, ich kann es bereitstellen, aber es hat nicht viel von irgendetwas zu tun, da mein aktuelles Projekt die Daten nicht untergliedert. Ich brauche nur einen Weg, um die Daten zu unterteilen, was ich bisher noch nicht getan habe. –

Antwort

0

Wenn ich die Frage richtig verstehe, klingt es so, als ob Sie Dinge basierend auf einer bestimmten Gruppe berechnen möchten (in Ihrem Fall clusterPosition?). Eine Möglichkeit, dies mit dplyr zu tun, ist die Verwendung von group_by mit summarize oder mutate. Das spätere Verzeichnis behält alle Zeilen in Ihrem ursprünglichen Datensatz bei und fügt einfach eine neue Spalte hinzu. Das erste aggregiert wie Zeilen und gibt eine Zusammenfassungsstatistik für jede eindeutige gruppierte Variable zurück.

Als Beispiel, wenn Ihre Daten etwas wie folgt aussehen:

df <- data.frame(leafArea = c(2.0, 3.0, 4.0, 5.0, 6.0), cluster = c(1, 2, 1, 2, 3), clusterPosition = c(1, 1, 2, 2, 1))

Um den Mittelwert und Standardabweichung für jede eindeutige clusterPosition erhalten Sie so etwas wie die unten tun würden, gibt diese eine Zeile für jeden eindeutige clusterPosition.

library(dplyr) 
df %>% group_by(clusterPosition) %>% summarize(meanArea = mean(leafArea), sdArea = sd(leafArea)) 

Wenn Sie jede einzelne Blatt zu einem gewissen Merkmal vergleichen wollen es clusterPosition ist, dh Sie können alle einzelnen Zeilen in der ursprünglichen Datensatzes erhalten möchten, können Sie statt summarise mutieren verwenden.

library(dplyr) 
df %>% group_by(clusterPosition) %>% mutate(meanPositionArea = mean(leafArea), diffMean = leafArea - meanPositionArea) 
Verwandte Themen