0Pricing
R Academy · Lektion

Werte mit rank() rangieren

Vergeben Sie Ränge mit Methoden zur Auflösung von Gleichständen: average, first, min, max, random.

Werte mit rank() rangieren ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Was gibt rank() zurück?

rank(x) gibt die Rangplätze der Werte eines Vektors zurück. Der kleinste Wert erhält Rang 1, der zweitkleinste Rang 2 usw. Im Gegensatz zu order() hat das Ergebnis dieselbe Länge wie die Eingabe; an jeder Position steht der Rang des entsprechenden Werts.

scores <- c(78, 92, 65, 88, 71)
ranks <- rank(scores)
print(scores)
print(ranks)

Gleichstände behandeln: Methode average

Bei gleichen Werten (Gleichständen) legt das Argument ties.method von rank() fest, wie die Ränge vergeben werden. Der Standardwert ist 'average': Gleiche Elemente erhalten den Mittelwert der Ränge, die sie sonst belegt hätten.

x <- c(10, 20, 20, 30)
# Default: average of positions 2 and 3 = 2.5
rank(x)
rank(x, ties.method = 'average')

Methode für Gleichstände: first und last

ties.method = 'first' weist demjenigen gleichen Element den niedrigeren Rang zu, das im Vektor zuerst erscheint. 'last' bewirkt das Gegenteil — das frühere Element erhält den höheren Rang.

x <- c(10, 20, 20, 30)
cat('first:', rank(x, ties.method = 'first'), '\n')
cat('last: ', rank(x, ties.method = 'last'),  '\n')

Methode für Gleichstände: min und max

'min' gibt allen gleichen Elementen den niedrigsten möglichen Rang (wie im Sport: Zwei Spieler, die gemeinsam auf Platz 3 liegen, erhalten beide Rang 3; niemand erhält Rang 4). 'max' gibt allen gleichen Elementen den höchsten möglichen Rang.

x <- c(10, 20, 20, 30)
cat('min:', rank(x, ties.method = 'min'), '\n')
cat('max:', rank(x, ties.method = 'max'), '\n')

Methode für Gleichstände: random

ties.method = 'random' löst Gleichstände auf, indem den gleichen Elementen zufällig verschiedene Ränge zugewiesen werden. Jeder Aufruf kann ein anderes Ergebnis liefern. Das ist nützlich, wenn Sie eindeutige Integer-Ränge benötigen, die Reihenfolge bei Gleichständen aber keine Rolle spielt.

x <- c(10, 20, 20, 20, 30)
set.seed(42)
cat('random run 1:', rank(x, ties.method = 'random'), '\n')
set.seed(99)
cat('random run 2:', rank(x, ties.method = 'random'), '\n')

Dichte Rangfolge und Standard-Rangfolge

R's rank() erzeugt eine Standard-Wettbewerbsrangfolge (1, 2, 2, 4). Für eine dichte Rangfolge (1, 2, 2, 3 — ohne Lücken) verwenden Sie rank(x, ties.method = 'min') für eindeutige Werte oder die Pakete data.table bzw. dplyr. Hier ist eine Lösung mit Base R:

x <- c(10, 20, 20, 30)
# Standard ranking (gaps after ties)
cat('Standard:', rank(x, ties.method = 'min'), '\n')
# Dense ranking: rank of sorted unique values
dense <- match(x, sort(unique(x)))
cat('Dense:   ', dense, '\n')

rank() vs. order() vs. sort()

Diese drei Funktionen hängen zusammen, geben aber unterschiedliche Ergebnisse zurück: sort(x) gibt sortierte Werte zurück, order(x) gibt die Positionen zurück, die den Vektor sortieren, und rank(x) gibt den Rang jeder Position zurück. Hier sehen Sie einen direkten Vergleich.

x <- c(30, 10, 50, 20, 40)
cat('x       :', x,        '\n')
cat('sort(x) :', sort(x),  '\n')
cat('order(x):', order(x), '\n')
cat('rank(x) :', rank(x),  '\n')

Rangfolge in absteigender Reihenfolge

Um vom größten zum kleinsten Wert zu ranken (Rang 1 = höchster Wert), negieren Sie den Vektor, bevor Sie ihn an rank() übergeben. Dieses Muster eignet sich für Ranglisten, bei denen Rang 1 das beste Ergebnis bedeutet.

scores <- c(78, 92, 65, 88, 71)
desc_ranks <- rank(-scores)
cat('Scores:      ', scores,     '\n')
cat('Rank (best=1):', desc_ranks, '\n')

Ränge zu einem Data Frame hinzufügen

Eine häufige Aufgabe besteht darin, einem Data Frame eine Rangspalte hinzuzufügen. Verwenden Sie rank() mit ties.method = 'min' und negieren Sie die Werte für eine absteigende Reihenfolge, um eine korrekte Rangliste zu erstellen.

df <- data.frame(
  player = c('Alice', 'Bob', 'Carol', 'Dave'),
  score  = c(250, 400, 250, 375)
)
df$rank <- rank(-df$score, ties.method = 'min')
df[order(df$rank), ]

rank() mit NA-Werten

rank() verfügt wie sort() und order() über ein Argument na.last. Der Standardwert ist 'keep'. Dabei erhalten NA-Werte den Rang NA, während die Nicht-NA-Elemente untereinander gerankt werden.

x <- c(5, NA, 2, NA, 8, 1)
cat('na.last=keep:  ', rank(x, na.last = 'keep'), '\n')
cat('na.last=TRUE:  ', rank(x, na.last = TRUE),   '\n')
cat('na.last=FALSE: ', rank(x, na.last = FALSE),  '\n')

Perzentilränge

Wandeln Sie Ränge in Perzentile um, indem Sie sie durch die Gesamtanzahl teilen. Ein Perzentilrang gibt an, welcher Anteil der Werte kleiner oder gleich einem bestimmten Element ist. Das ist in der Statistik und bei der Bewertung von Lernergebnissen nützlich.

scores <- c(60, 75, 82, 91, 68, 77, 85, 95)
n <- length(scores)
pct_rank <- rank(scores) / n * 100
result <- data.frame(score = scores, percentile = round(pct_rank, 1))
result[order(result$score), ]

Kurze Überprüfung

Welcher Wert von ties.method weist allen Elementen mit gleichem Wert denselben niedrigsten möglichen Rang zu (wie im Sport, wenn zwei Spieler gemeinsam den 3. Platz belegen und niemand den 4. Platz erhält)?

Die wichtigsten Punkte zu rank()

Die wichtigsten Punkte zu rank():

  • rank(x) gibt den Rang jedes Elements zurück (mit derselben Länge wie die Eingabe)
  • Standardmäßig gilt ties.method = 'average': Elemente mit gleichem Wert teilen sich den Mittelwert ihrer Ränge
  • 'min' = sportübliche Rangvergabe (gemeinsamer niedrigster Rang), 'max' = gemeinsamer höchster Rang
  • 'first' und 'last' lösen Gleichstände anhand der Reihenfolge ihres Auftretens auf
  • Verwenden Sie rank(-x) für absteigende Ränge (Rang 1 = größter Wert)
  • Fügen Sie Data Frames Rangspalten mit df$rank <- rank(-df$score, ties.method='min') hinzu
x <- c(10, 30, 20, 30, 10)
cat('average:', rank(x, ties.method = 'average'), '\n')
cat('min:    ', rank(x, ties.method = 'min'),     '\n')
cat('max:    ', rank(x, ties.method = 'max'),     '\n')
cat('first:  ', rank(x, ties.method = 'first'),   '\n')

Häufig gestellte Fragen

Ist die Lektion „Werte mit rank() rangieren“ kostenlos?

Ja — der vollständige Text von „Werte mit rank() rangieren“ 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 „Werte mit rank() rangieren“?

Vergeben Sie Ränge mit Methoden zur Auflösung von Gleichständen: average, first, min, max, random. 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 3 von 4.

Wie lange dauert die Lektion „Werte mit rank() rangieren“?

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

  1. Vektoren mit sort() sortieren
  2. order() für flexible Sortierung
  3. Werte mit rank() rangieren
  4. Data Frames nach Spalten sortieren
← Zurück zu R Academy