La fonction arrange() trie les lignes (observations) par ordre croissant ou décroissant. Elle est simple d'emploi et peut être combinée avec la fonction group_by() afin que le tri s'effectue à chaque niveau spécifié dans group_by(). La fonction arrange() possède l'argument .by_group, que l'on fixe à TRUE si le tri doit respecter group_by().
Vous pouvez trier sur plusieurs variables, par ordre croissant ou décroissant. Pour trier par ordre décroissant, la variable doit être placée dans desc(), abréviation de descending (décroissant).
La fonction arrange() est illustrée à l'aide des données mpg.
Exemple : trier sur la variable displ par ordre croissant :
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 compactExemple : trier sur la variable displ par ordre croissant et sur hwy par ordre décroissant :
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 compactExemple : trier avec group_by() activé
Pour que les observations soient triées séparément selon les différents niveaux d'une variable catégorielle, on utilise group_by(). Dans group_by(), on spécifie une ou plusieurs variables catégorielles selon lesquelles le tri doit être groupé (il est possible d'en indiquer plusieurs). Le tri s'effectue alors séparément au sein de chaque catégorie. Dans l'exemple ci-dessous, nous trions les données mpg selon la variable displ, et ce séparément pour chaque constructeur automobile (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 subcompactToutes les opérations qui suivent group_by() s'effectueront de manière groupée, c'est-à-dire séparément dans les groupes que group_by() spécifie. Si le résultat est enregistré dans un nouveau data frame, celui-ci restera lui aussi groupé, de sorte que les opérations ultérieures s'effectueront séparément dans chaque groupe. Dans l'exemple ci-dessous, mpg sert à créer mpg2 après l'application de group_by(). Cela signifie que mpg2 sera lui aussi groupé selon la variable manufacturer, ce qui peut prêter à confusion par la suite.
mpg2 <- mpg |>
group_by(manufacturer) |>
arrange(displ)Pour supprimer le groupement, on utilise la fonction ungroup(). En voici un exemple :
mpg2 <- mpg |>
group_by(manufacturer) |>
arrange(displ) |>
ungroup()Désormais, mpg2 ne sera plus groupé selon manufacturer.