Data Frames nach Spalten sortieren
Sortieren Sie komplette Data Frames mit order() und dplyr's arrange().
Data Frames nach Spalten sortieren ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Einen Data Frame nach einer Spalte sortieren
Die übliche Vorgehensweise in Base R zum Sortieren eines Data Frames besteht darin, order() auf die gewünschte Spalte anzuwenden und die resultierenden Indizes zum Neuordnen der Zeilen zu verwenden. Das Komma nach den Indizes wählt alle Spalten aus.
df <- data.frame(
name = c('Charlie', 'Alice', 'Bob', 'Diana'),
age = c(35, 28, 42, 31),
salary = c(55000, 48000, 72000, 61000)
)
df[order(df$age), ]Absteigend sortieren durch Negieren
Bei numerischen Spalten negieren Sie die Spalte innerhalb von order(), um die Sortierrichtung umzukehren. Das Minuszeichen kehrt alle Werte um, sodass der ursprüngliche Maximalwert beim Sortieren zum Minimalwert wird.
df <- data.frame(
name = c('Charlie', 'Alice', 'Bob', 'Diana'),
salary = c(55000, 48000, 72000, 61000)
)
# Highest salary first
df[order(-df$salary), ]Sortieren nach mehreren Spalten
Übergeben Sie mehrere Spalten an order(), um zunächst nach einem primären und anschließend nach sekundären Kriterien zu sortieren. Das zweite Argument löst Gleichstände beim ersten Kriterium auf. Dies entspricht dem SQL-Ausdruck ORDER BY col1, col2.
df <- data.frame(
dept = c('Eng', 'HR', 'Eng', 'HR', 'Eng'),
name = c('Zara', 'Bob', 'Alice', 'Eve', 'Mike'),
salary = c(90000, 55000, 85000, 58000, 78000)
)
# Sort by dept, then by salary descending within dept
df[order(df$dept, -df$salary), ]Zeichenspalten sortieren
Das Sortieren nach einer Zeichenspalte funktioniert auf dieselbe Weise – order() übernimmt die lexikografische Sortierung. Für eine umgekehrte alphabetische Reihenfolge verwenden Sie decreasing = TRUE statt einer Negation (Negation funktioniert nur bei numerischen Werten).
df <- data.frame(
city = c('Paris', 'Athens', 'Berlin', 'London'),
pop_mil = c(2.1, 0.6, 3.6, 9.0)
)
# Alphabetical by city
df[order(df$city), ]
# Reverse alphabetical
df[order(df$city, decreasing = TRUE), ]Zeilennummern nach dem Sortieren zurücksetzen
Nach dem Sortieren spiegeln die Zeilennamen die ursprünglichen Positionen wider (z. B. 3, 1, 4, 2). Um sie auf fortlaufende Ganzzahlen ab 1 zurückzusetzen, setzen Sie row.names(df) <- NULL oder verpacken Sie das Ergebnis in data.frame().
df <- data.frame(
x = c(30, 10, 20),
y = c('c', 'a', 'b')
)
sorted <- df[order(df$x), ]
cat('Before reset:\n'); print(sorted)
row.names(sorted) <- NULL
cat('After reset:\n'); print(sorted)Sortieren mit NA-Werten
Wenn eine Sortierspalte NA enthält, platziert order() diese standardmäßig am Ende. Verwenden Sie na.last = FALSE, um die NA-Zeilen an den Anfang zu verschieben, oder filtern Sie sie vorher heraus.
df <- data.frame(
name = c('Alice', 'Bob', 'Carol', 'Dave'),
score = c(85, NA, 92, NA)
)
cat('NAs last (default):\n')
print(df[order(df$score), ])
cat('NAs first:\n')
print(df[order(df$score, na.last = FALSE), ])dplyr::arrange() als moderne Alternative
Das Paket dplyr stellt mit arrange() eine übersichtlichere Alternative bereit. Obwohl dplyr nicht zu Base R gehört, hilft Ihnen die Kenntnis der Syntax dabei, modernen R-Code zu lesen. Hinweis: isRunnable ist hier nur deshalb auf true gesetzt, um die Syntax anzuzeigen – dplyr muss installiert sein, damit der Code ausgeführt werden kann.
# dplyr::arrange() syntax (requires dplyr installed)
# library(dplyr)
# df |> arrange(salary) # ascending
# df |> arrange(desc(salary)) # descending
# df |> arrange(dept, desc(salary)) # multi-column
# Equivalent base R:
df <- data.frame(dept=c('A','B','A'), salary=c(50,70,60))
df[order(df$dept, -df$salary), ]Faktoren nach der Reihenfolge ihrer Levels sortieren
Faktorspalten werden nach ihrer Level-Reihenfolge und nicht alphabetisch sortiert. Dadurch können Sie eine eigene Sortierreihenfolge festlegen, indem Sie vor dem Sortieren explizit Faktorlevels setzen.
df <- data.frame(
priority = factor(c('Low', 'High', 'Medium', 'High', 'Low'),
levels = c('Low', 'Medium', 'High')),
task = c('T1', 'T2', 'T3', 'T4', 'T5')
)
# Sorts by factor level (Low < Medium < High)
df[order(df$priority), ]Sortieren und die obersten Zeilen auswählen
Ein häufig verwendetes Muster besteht darin, einen Data Frame zu sortieren und anschließend mit head() die obersten N Zeilen oder mit tail() die untersten N Zeilen auszuwählen. Dies ist das Base-R-Gegenstück zu SQLs ORDER BY ... LIMIT N.
df <- data.frame(
product = c('A', 'B', 'C', 'D', 'E'),
revenue = c(1200, 4500, 890, 3100, 2750)
)
# Top 3 by revenue
top3 <- head(df[order(-df$revenue), ], 3)
row.names(top3) <- NULL
print(top3)Sortieren an Ort und Stelle vs. zugewiesenes Sortierergebnis
Beim Sortieren wird der ursprüngliche Data Frame nicht verändert – stattdessen wird ein neuer zurückgegeben. Weisen Sie das Ergebnis daher immer einer Variablen zu, entweder einer neuen oder der ursprünglichen. Das Überschreiben des Originals ist unproblematisch, wenn Sie die unsortierte Version nicht mehr benötigen.
df <- data.frame(
x = c(3, 1, 4, 1, 5, 9),
y = c('c', 'a', 'd', 'b', 'e', 'i')
)
# Safe: assign to new variable
df_sorted <- df[order(df$x), ]
# Or overwrite original:
df <- df[order(df$x), ]
row.names(df) <- NULL
print(df)Vollständiger Sortierablauf
Hier sehen Sie einen vollständigen, realistischen Ablauf zum Sortieren eines Data Frames: Sortieren Sie Mitarbeitende zunächst aufsteigend nach dem Abteilungsnamen und anschließend absteigend nach dem Gehalt, setzen Sie die Zeilenindizes zurück und geben Sie das Ergebnis übersichtlich aus.
employees <- data.frame(
name = c('Alice', 'Bob', 'Carol', 'Dave', 'Eve'),
dept = c('IT', 'HR', 'IT', 'HR', 'IT'),
salary = c(85000, 58000, 92000, 63000, 78000)
)
result <- employees[order(employees$dept, -employees$salary), ]
row.names(result) <- NULL
print(result)Kurze Überprüfung
Wie sortieren Sie einen Data Frame df mit Base R nach der numerischen Spalte df$salary in absteigender Reihenfolge?
Data Frames sortieren: Die wichtigsten Punkte
Die wichtigsten Punkte zum Sortieren von Data Frames:
- Base-R-Idiom:
df[order(df$col), ] - Absteigend numerisch sortieren: mit
-innerhalb vonorder(-df$col)negieren - Zeichenwerte absteigend sortieren: das Argument
decreasing = TRUEverwenden - Mehrere Spalten:
order(df$a, df$b)– die sekundäre Sortierung löst Gleichstände auf - Faktoren werden nach ihrer festgelegten Level-Reihenfolge und nicht alphabetisch sortiert
- Setzen Sie die Zeilennamen nach dem Sortieren mit
row.names(df) <- NULLzurück - Moderne Alternative:
dplyr::arrange()mitdesc()für eine absteigende Sortierung
df <- data.frame(
name = c('Zara', 'Ana', 'Bob', 'Ana'),
score = c(90, 85, 92, 88)
)
# Sort by name asc, score desc
result <- df[order(df$name, -df$score), ]
row.names(result) <- NULL
print(result)Häufig gestellte Fragen
Ist die Lektion „Data Frames nach Spalten sortieren“ kostenlos?
Ja — der vollständige Text von „Data Frames nach Spalten sortieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Data Frames nach Spalten sortieren“?
Sortieren Sie komplette Data Frames mit order() und dplyr's arrange(). Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Data Frames nach Spalten sortieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Vektoren mit sort() sortieren
- order() für flexible Sortierung
- Werte mit rank() rangieren
- Data Frames nach Spalten sortieren