Dplyr slice() : sélectionner des lignes par position

La fonction slice() sélectionne des lignes (observations) en fonction de leur position. Elle permet de sélectionner, de supprimer ou de dupliquer des lignes. slice() dispose des fonctions auxiliaires suivantes :

Fonctions auxiliaires (helper functions) :

  • slice_head() et slice_tail() sélectionnent respectivement les premières et les dernières lignes.
  • slice_sample() sélectionne des lignes de façon aléatoire.
  • slice_min() et slice_max() sélectionnent les lignes présentant les valeurs les plus élevées ou les plus faibles d'une variable.

Ce chapitre utilise les données mpg pour illustrer slice().

library(tidyverse)
data(mpg)

Commençons par sélectionner les 10 premières lignes :

mpg |>
  slice(1:10)
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 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 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact

Suppression des 10 premières lignes de mpg :

mpg |>
  slice(-(1:10))
## A tibble: 224 × 11
   manufacturer model              displ  year   cyl trans      drv     cty   hwy fl    class
 1 audi         a4 quattro           2    2008     4 auto(s6)   4        19    27 p     compact
 2 audi         a4 quattro           2.8  1999     6 auto(l5)   4        15    25 p     compact
 3 audi         a4 quattro           2.8  1999     6 manual(m5) 4        17    25 p     compact
 4 audi         a4 quattro           3.1  2008     6 auto(s6)   4        17    25 p     compact
 5 audi         a4 quattro           3.1  2008     6 manual(m6) 4        15    25 p     compact
 6 audi         a6 quattro           2.8  1999     6 auto(l5)   4        15    24 p     midsize
 7 audi         a6 quattro           3.1  2008     6 auto(s6)   4        17    25 p     midsize
 8 audi         a6 quattro           4.2  2008     8 auto(s6)   4        16    23 p     midsize
 9 chevrolet    c1500 suburban 2wd   5.3  2008     8 auto(l4)   r        14    20 r     suv
10 chevrolet    c1500 suburban 2wd   5.3  2008     8 auto(l4)   r        11    15 e     suv

Exemples avec les fonctions auxiliaires :

## 5 dernières lignes
mpg |>
  slice_tail(n = 5)

## 5 premières lignes
mpg |>
  slice_head(n = 5)

## Sélectionner les lignes ayant les 20 valeurs de displ les plus élevées
mpg |>
  slice_max(displ, n = 20)

## Sélectionner les lignes ayant les 20 valeurs de displ les plus faibles
mpg |>
  slice_min(displ, n = 20)

La fonction filter() sert à filtrer des lignes à l'aide de conditions plutôt que par position. Voir le chapitre dplyr filter(). Il est toutefois possible de sélectionner des lignes par position avec filter(), comme le montre l'exemple suivant :

## Sélectionner la ligne 4
mpg |>
   filter(row_number() == 4)