So ordnen sie zeilen mit dplyr in einer benutzerdefinierten reihenfolge an


Sie können die folgende grundlegende Syntax verwenden, um die Zeilen eines Datenrahmens mithilfe des dplyr- Pakets in R in einer benutzerdefinierten Reihenfolge anzuordnen:

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

Dieses spezielle Beispiel ordnet die Zeilen basierend auf der benutzerdefinierten Reihenfolge C, B, D, A für die Teamspaltenwerte und dann entsprechend den Punktspaltenwerten in aufsteigender Reihenfolge an.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: So ordnen Sie Zeilen mit dplyr in einer benutzerdefinierten Reihenfolge an

Angenommen, wir haben den folgenden Datenrahmen, der die von Basketballspielern verschiedener Teams erzielten Punkte zeigt:

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

Wenn wir die Funktion „arrang()“ verwenden, um die Zeilen basierend auf den Werten in der Spalte „Team“ zu sortieren, dann sortiert die Funktion „arrang()“ die Zeilen basierend auf den Werten in der Spalte „ Punkte “ basierend auf der standardmäßigen alphabetischen Reihenfolge :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

Die Linien werden alphabetisch nach Team und dann aufsteigend nach Punkten aufgelistet.

Nehmen wir jedoch an, wir möchten die Linien stattdessen nach der folgenden Reihenfolge der Teamwerte anordnen: C, B, D, A.

Dazu können wir die Funktion match() innerhalb der Funktion array() verwenden:

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

Die Zeilen sind in der benutzerdefinierten Reihenfolge angeordnet, die wir für die Teamspalte angegeben haben (C, B, D, A), dann nach der Punktespalte .

Hinweis Nr. 1 : Die Match- Funktion ruft den Zeilenindex der Werte in der Teamspalte ab, dann kann die Arrangierfunktion basierend auf diesen Indexwerten sortieren.

Hinweis Nr. 2 : Um nach abnehmenden Punktwerten anzuordnen, verwenden Sie stattdessen einfach desc(points) .

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:

So organisieren Sie Zeilen mit dplyr nach Gruppen
So filtern Sie eindeutige Werte mit dplyr
So filtern Sie mit dplyr nach mehreren Bedingungen

Einen Kommentar hinzufügen

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