Dplyr arrange(): sortere rader (observasjoner)

Funksjonen arrange() sorterer rader (observasjoner) i stigende eller synkende rekkefølge. Funksjonen er enkel å bruke og kan kombineres med funksjonen group_by() slik at sorteringen skjer på hvert nivå som spesifiseres i group_by(). Funksjonen arrange() har argumentet .by_group, som settes til TRUE dersom sorteringen skal respektere group_by().

Du kan sortere på flere variabler i stigende eller synkende rekkefølge. For å sortere i synkende rekkefølge må variabelen omsluttes av desc(), som er en forkortelse for descending (synkende).

Funksjonen arrange() demonstreres ved hjelp av mpg-datasettet.

Eksempel: Sorter på variabelen displ i stigende rekkefø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: Sorter på variabelen displ i stigende rekkefølge og hwy i synkende rekkefø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: Sorter med group_by() aktivert

For at observasjonene skal sorteres separat for ulike nivåer i en kategorisk variabel, brukes group_by(). I group_by() spesifiseres én eller flere kategoriske variabler som sorteringen skal grupperes etter (det er mulig å angi flere). Da skjer sorteringen separat innenfor hver kategori. I eksempelet nedenfor sorterer vi mpg-datasettet etter variabelen displ, og dette skjer separat for hver bilprodusent (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 operasjoner etter group_by() vil skje gruppert, det vil si separat i de gruppene som group_by() spesifiserer. Dersom resultatet lagres i en ny dataframe, vil også den fortsatt være gruppert, slik at påfølgende operasjoner skjer separat i hver gruppe. I eksempelet nedenfor brukes mpg til å lage mpg2 etter at group_by() er brukt. Det betyr at også mpg2 vil være gruppert på variabelen manufacturer, noe som kan skape forvirring senere.

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

For å fjerne grupperingen brukes funksjonen ungroup(). Eksempel:

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

Nå vil mpg2 ikke være gruppert på manufacturer.