Die vollständige anleitung: verwendung von sort(), order() und rank() in r


Drei Funktionen von R, die oft verwechselt werden, sind Sortieren , Ordnen und Ranking .

Hier ist der Unterschied zwischen diesen Funktionen:

  • sort() sortiert einen Vektor in aufsteigender Reihenfolge
  • order() gibt den Index jedes Elements eines Vektors in sortierter Reihenfolge zurück
  • Rank() weist jedem Element eines Vektors einen Rang zu (kleinster Wert = 1).

Das folgende Beispiel zeigt, wie Sie jede dieser Funktionen in der Praxis nutzen können.

Beispiel: Verwenden Sie sort(), order() und Rank() mit Vektoren

Der folgende Code zeigt, wie die Funktionen sort() , order() und Rank() mit einem vierwertigen Vektor verwendet werden:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector
sort(s)

[1] 0 10 15 20

#order vector
order(s)

[1] 1 3 4 2

#rank vector
rank(x)

[1] 1 4 2 3

Hier ist, was jede Funktion getan hat:

1. Die Funktion sort() sortierte einfach die Vektorwerte in aufsteigender Reihenfolge.

2. Die Funktion order() gab den Index jedes Elements in sortierter Reihenfolge zurück.

  • Wenn Sie die ursprünglichen Vektorwerte anhand dieser Indexwerte ordnen, erhalten Sie einen sortierten Vektor.
  • Beispielsweise weist uns order() an, den Wert zuerst an der Indexposition 1 zu platzieren – im ursprünglichen Vektor ist er 0.
  • Dann sagt uns order(), dass wir den Wert dann an Indexposition 3 setzen sollen – das ist 10 im Originalvektor.
  • Dann sagt uns order(), dass wir den Wert dann an Indexposition 4 setzen sollen – das ist 15 im Originalvektor.
  • Dann sagt uns order(), dass wir den Wert dann an Indexposition 2 setzen sollen – das ist 20 im Originalvektor.
  • Das Endergebnis ist ein sortierter Vektor – 0, 10, 15, 20.

3. Die Funktion Rank() weist jedem Element des Vektors einen Rang zu, wobei 1 für den kleinsten Wert verwendet wird.

  • Rank() sagt uns beispielsweise, dass der erste Wert des Originalvektors der kleinste ist (Rang = 1) und dass der zweite Wert des Originalvektors der größte ist (Rang = 4).

Beachten Sie, dass wir die folgende Syntax verwenden können, um sort() , order() und rank() in umgekehrter Reihenfolge zu verwenden:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector in decreasing order
sort(x, decreasing= TRUE )

[1] 20 15 10 0

#order vector in decreasing order
order(x, decreasing= TRUE )

[1] 2 4 3 1

#rank vector in reverse order (largest value = 1)
rank(-x)

[1] 4 1 3 2

Beachten Sie, dass diese Ergebnisse genau das Gegenteil von denen sind, die in den vorherigen Beispielen erzielt wurden.

Hinweis: Umgang mit Bindungen mit der Funktion Rank()

Wir können das Argument tie.method verwenden, um anzugeben, wie wir mit Gleichständen umgehen sollen, wenn wir die Funktion Rank() verwenden:

 rank(x, ties. method = ' average ')

Sie können eine der folgenden Optionen verwenden, um festzulegen, wie mit Links umgegangen wird:

  • Durchschnitt : (Standard) Weist jedem verknüpften Element den durchschnittlichen Rang zu (Elemente auf Platz 3 und 4 würden beide einen Rang von 3,5 erhalten)
  • first : Weist dem ersten verknüpften Element den niedrigsten Rang zu (Elemente auf Platz 3 und 4 würden Rang 3 bzw. 4 erhalten)
  • min : Weist jedem verknüpften Element den niedrigsten Rang zu (Elemente auf Platz 3 und 4 würden beide einen Rang von 3 erhalten)
  • max : Weist jedem verknüpften Element den höchsten Rang zu (Elemente auf Platz 3 und 4 würden beide einen Rang von 4 erhalten)
  • random : Weist jedem Element mit Gleichstand einen zufälligen Rang zu (jedes Element mit Gleichstand auf der 3. und 4. Position könnte einen der beiden Ränge erhalten).

Abhängig von Ihrem Szenario ist die Verwendung einer dieser Methoden möglicherweise sinnvoller als die anderen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in R ausgeführt werden:

So sortieren Sie in R nach mehreren Spalten
So sortieren Sie einen Datenrahmen nach Datum in R
So berechnen Sie den Perzentilrang in R

Einen Kommentar hinzufügen

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