So sortieren Sie einen Datenrahmen nach mehreren Spalten in R

Veröffentlicht in: Articles | 0

Um zu verstehen, wie man Datenrahmen in R richtig sortiert, müssen wir natürlich zuerst einen Datenrahmen generieren, um ihn zu manipulieren.

Hinweis: Der Abstand ist nicht notwendig, verbessert aber die Lesbarkeit.,

Ausführen unseres run.R Skripts gibt die Liste der Vektoren in unserem Datenrahmen erwartungsgemäß in der Reihenfolge aus, in der sie eingegeben wurden:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1

Die Bestellfunktion

Ist zwar möglicherweise nicht die einfachste Sortiermethode, die syntaxbedingt am einfachsten für alle Installationen von Rist die Funktionorder, da sie Teil des Modulsbase.,

Die Funktion order akzeptiert eine Reihe von Argumenten, aber auf der einfachsten Ebene muss das erste Argument eine Folge von Werten oder logischen Vektoren sein.,

Zum Beispiel können wir verwenden, um einfach einen Vektor von fünf zufällig geordneten Zahlen mit diesem Skript zu sortieren:

# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector

Wenn wir das Skript ausführen, sehen wir die anfängliche Ausgabe des ungeordneten Vektors, gefolgt von der jetzt geordneten Liste danach:

$ Rscript run.R 2 5 1 3 4 1 2 3 4 5

Sortieren eines Datenrahmens nach Vektornamen

Mit der Funktion order() In unserem Toolkit beginnen wir mit der Sortierung unseres Datenrahmens, indem wir die Vektornamen innerhalb des Datenrahmens übergeben.,

Mit unserem zuvor generierten dataframe – Objekt können wir beispielsweise nach dem Vektor z sortieren, indem wir unserem Skript den folgenden Code hinzufügen:

# Sort by vector name dataframe

Was wir effektiv tun, ist unser ursprüngliches dataframe Objekt und Übergabe der neuen Indexreihenfolge, die wir haben möchten., Diese Indexreihenfolge wird mit der with() – Funktion generiert, die effektiv eine neue Umgebung erstellt, in der die übergebenen Daten im ersten Argument zusammen mit einem Ausdruck zum Auswerten dieser Daten im zweiten Argument verwendet werden.

Daher bewerten wir die dataframe – Daten mithilfe der – Funktion neu und möchten basierend auf dem z – Vektor innerhalb dieses Datenrahmens bestellen., Dies liefert eine neue Reihenfolge der Indizes für die Daten-frame-Werte, die dann schließlich ausgewertet innerhalb von dataframe, Ausgabe unseres neuen bestellt Ergebnis.

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z4 strawberry c 13 banana b 22 orange d 31 apple a 4

Folglich sehen wir unsere ursprüngliche ungeordnete Ausgabe, gefolgt von einer zweiten Ausgabe mit den Daten sortiert nach Spalte z.

Sortierung nach Spaltenindex

Ähnlich wie bei der obigen Methode ist es auch möglich, basierend auf der numerischen index einer Spalte im Datenrahmen anstelle des spezifischen Namens zu sortieren.,

Anstatt die Funktion with() zu verwenden, können wir einfach die Funktion order() an unsere Funktion dataframeübergeben. Wir geben an, dass wir nach der Spalte index 1 sortieren möchten, indem wir die Syntax dataframe verwenden, wodurch R die Ebenen (Namen) dieses Index 1 zurückgibt., Mit anderen Worten, ähnlich wie bei der Übergabe des obigen z – Vektornamens wird order basierend auf den Vektorwerten sortiert, die sich in der Indexspalte befinden 1:

dataframe ),]

Wie erwartet erhalten wir unseren normalen Vektornamen.ausgabe gefolgt von der sortierten Ausgabe in der ersten Spalte:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z1 apple a 43 banana b 22 orange d 34 strawberry c 1

Sortierung nach mehreren Spalten

In einigen Fällen kann es erwünscht sein, nach mehreren Spalten zu sortieren. Zum Glück ist dies mit den zuvor beschriebenen Methoden sehr einfach.,

Um mehrere Spalten mithilfe von Vektornamen zu sortieren, fügen Sie dem Funktionsaufruf wie zuvor zusätzliche Argumente hinzu:

# Sort by vector name then dataframe

Um nach mehreren Spalten basierend auf dem Spaltenindex zu sortieren, fügen Sie mit unterschiedlichen Indizes hinzu:

div>

# Sort by column index then dataframe, dataframe ),]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.