Dplyr arrange(): sortér rækker (observationer)

Funktionen arrange() sorterer rækker (observationer) i stigende eller faldende rækkefølge. Funktionen er nem at bruge og kan kombineres med funktionen group_by(), så sorteringen sker på hvert niveau, der specificeres i group_by(). Funktionen arrange() har argumentet .by_group, som sættes til TRUE, hvis sorteringen skal respektere group_by().

Du kan sortere på flere variabler i stigende eller faldende rækkefølge. For at sortere i faldende rækkefølge skal variablen omsluttes af desc(), som er en forkortelse for descending (faldende).

Funktionen arrange() demonstreres ved hjælp af mpg-data.

Eksempel: Sortér på variablen displ i stigende rækkefølge:

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     compact

Eksempel: Sortér på variablen displ i stigende rækkefølge og hwy i faldende rækkefølge:

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     compact

Eksempel: Sortér med group_by() aktiveret

For at observationerne skal sorteres separat for forskellige niveauer af en kategorisk variabel bruges group_by(). I group_by() specificeres en eller flere kategoriske variabler, som sorteringen skal grupperes efter (det er muligt at angive flere). Så sker sorteringen separat inden for hver kategori. I eksemplet nedenfor sorterer vi mpg-data efter variablen displ, og det sker separat for hver bilproducent (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     subcompact

Alle operationer efter group_by() vil ske grupperet, dvs. separat i de grupper, som group_by() specificerer. Hvis resultatet gemmes i en ny dataframe, vil også den fortsat være grupperet, så efterfølgende operationer sker separat i hver gruppe. I eksemplet nedenfor bruges mpg til at oprette mpg2, efter at group_by() er blevet anvendt. Det betyder, at også mpg2 vil være grupperet på variablen manufacturer, hvilket kan skabe forvirring senere.

mpg2 <- mpg |>
  group_by(manufacturer) |>
  arrange(displ)

For at fjerne grupperingen bruges funktionen ungroup(). Eksempel følger:

mpg2 <- mpg |>
  group_by(manufacturer) |>
  arrange(displ) |>
  ungroup()

Nu vil mpg2 ikke være grupperet på manufacturer.