Die Funktion arrange() sortiert Zeilen (Beobachtungen) in aufsteigender oder absteigender Reihenfolge. Die Funktion ist einfach anzuwenden und lässt sich mit der Funktion group_by() kombinieren, sodass die Sortierung auf jeder in group_by() angegebenen Ebene erfolgt. Die Funktion arrange() besitzt das Argument .by_group, das auf TRUE gesetzt wird, wenn die Sortierung group_by() berücksichtigen soll.
Sie können nach mehreren Variablen in aufsteigender oder absteigender Reihenfolge sortieren. Um in absteigender Reihenfolge zu sortieren, muss die Variable von desc() umschlossen werden, das die Abkürzung für descending (absteigend) ist.
Die Funktion arrange() wird anhand des Datensatzes mpg demonstriert.
Beispiel: Nach der Variablen displ in aufsteigender Reihenfolge sortieren:
mpg |>
arrange(displ)## A tibble: 234 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 honda civic 1.6 1999 4 manual(m5) f 28 33 r subcompact
2 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
3 honda civic 1.6 1999 4 manual(m5) f 25 32 r subcompact
4 honda civic 1.6 1999 4 manual(m5) f 23 29 p subcompact
5 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
6 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
7 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 honda civic 1.8 2008 4 manual(m5) f 26 34 r subcompact
11 honda civic 1.8 2008 4 auto(l5) f 25 36 r subcompact
12 honda civic 1.8 2008 4 auto(l5) f 24 36 c subcompact
13 toyota corolla 1.8 1999 4 auto(l3) f 24 30 r compact
14 toyota corolla 1.8 1999 4 auto(l4) f 24 33 r compact
15 toyota corolla 1.8 1999 4 manual(m5) f 26 35 r compact
16 toyota corolla 1.8 2008 4 manual(m5) f 28 37 r compact
17 toyota corolla 1.8 2008 4 auto(l4) f 26 35 r compact
18 volkswagen passat 1.8 1999 4 manual(m5) f 21 29 p midsize
19 volkswagen passat 1.8 1999 4 auto(l5) f 18 29 p midsize
20 volkswagen jetta 1.9 1999 4 manual(m5) f 33 44 d compactBeispiel: Nach der Variablen displ in aufsteigender und nach hwy in absteigender Reihenfolge sortieren:
mpg |>
arrange(displ, desc(hwy))## A tibble: 234 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 honda civic 1.6 1999 4 manual(m5) f 28 33 r subcompact
2 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
3 honda civic 1.6 1999 4 manual(m5) f 25 32 r subcompact
4 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
5 honda civic 1.6 1999 4 manual(m5) f 23 29 p subcompact
6 toyota corolla 1.8 2008 4 manual(m5) f 28 37 r compact
7 honda civic 1.8 2008 4 auto(l5) f 25 36 r subcompact
8 honda civic 1.8 2008 4 auto(l5) f 24 36 c subcompact
9 toyota corolla 1.8 1999 4 manual(m5) f 26 35 r compact
10 toyota corolla 1.8 2008 4 auto(l4) f 26 35 r compact
11 honda civic 1.8 2008 4 manual(m5) f 26 34 r subcompact
12 toyota corolla 1.8 1999 4 auto(l4) f 24 33 r compact
13 toyota corolla 1.8 1999 4 auto(l3) f 24 30 r compact
14 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
15 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
16 volkswagen passat 1.8 1999 4 manual(m5) f 21 29 p midsize
17 volkswagen passat 1.8 1999 4 auto(l5) f 18 29 p midsize
18 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
19 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
20 volkswagen jetta 1.9 1999 4 manual(m5) f 33 44 d compactBeispiel: Sortieren mit aktiviertem group_by()
Damit die Beobachtungen für die verschiedenen Ausprägungen einer kategorialen Variablen getrennt sortiert werden, verwendet man group_by(). In group_by() werden eine oder mehrere kategoriale Variablen angegeben, nach denen die Sortierung gruppiert werden soll (die Angabe mehrerer Variablen ist möglich). Die Sortierung erfolgt dann getrennt innerhalb jeder Kategorie. Im folgenden Beispiel sortieren wir den Datensatz mpg nach der Variablen displ, und zwar getrennt für jeden Fahrzeughersteller (manufacturer).
mpg |>
group_by(manufacturer) |>
arrange(displ)## Groups: manufacturer [15]
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 honda civic 1.6 1999 4 manual(m5) f 28 33 r subcompact
2 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
3 honda civic 1.6 1999 4 manual(m5) f 25 32 r subcompact
4 honda civic 1.6 1999 4 manual(m5) f 23 29 p subcompact
5 honda civic 1.6 1999 4 auto(l4) f 24 32 r subcompact
6 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
7 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 honda civic 1.8 2008 4 manual(m5) f 26 34 r subcompactAlle Operationen nach group_by() erfolgen gruppiert, d. h. getrennt in den Gruppen, die group_by() festlegt. Wird das Ergebnis in einem neuen Data Frame gespeichert, bleibt auch dieser gruppiert, sodass nachfolgende Operationen getrennt in jeder Gruppe ausgeführt werden. Im folgenden Beispiel wird mpg verwendet, um mpg2 zu erstellen, nachdem group_by() angewendet wurde. Das bedeutet, dass auch mpg2 nach der Variablen manufacturer gruppiert ist, was später für Verwirrung sorgen kann.
mpg2 <- mpg |>
group_by(manufacturer) |>
arrange(displ)Um die Gruppierung aufzuheben, verwendet man die Funktion ungroup(). Ein Beispiel:
mpg2 <- mpg |>
group_by(manufacturer) |>
arrange(displ) |>
ungroup()Nun ist mpg2 nicht mehr nach manufacturer gruppiert.