Comment sélectionner la première ligne par groupe à l’aide de dplyr



Souvent, vous souhaiterez peut-être sélectionner la première ligne de chaque groupe à l’aide du package dplyr dans R. Vous pouvez utiliser la syntaxe de base suivante pour ce faire :

df %>%
  group_by(group_var) %>%
  arrange(values_var) %>%
  filter(row_number()==1)

L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Exemple : sélectionnez la première ligne par groupe dans R

Supposons que nous ayons l’ensemble de données suivant dans R :

#create dataset
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
                 points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17))

#view dataset
df

   team points
1     A      4
2     A      9
3     A      7
4     B      7
5     B      6
6     B     13
7     C      8
8     C      8
9     C      4
10    C     17

Le code suivant montre comment utiliser le package dplyr pour sélectionner la première ligne par groupe dans R :

library(dplyr)

df %>%
  group_by(team) %>%
  arrange(points) %>%
  filter(row_number()==1)

# A tibble: 3 x 2
# Groups:   team [3]
  team  points
    
1 A          4
2 C          4
3 B          6

Par défaut, arrange() trie les valeurs par ordre croissant mais nous pouvons facilement trier les valeurs par ordre décroissant :

df %>%
  group_by(team) %>%
  arrange(desc(points)) %>%
  filter(row_number()==1)

# A tibble: 3 x 2
# Groups:   team [3]
  team  points
    
1 C         17
2 B         13
3 A          9

Notez que vous pouvez facilement modifier ce code pour sélectionner la n ème ligne de chaque groupe. Changez simplement row_number() == n .

Par exemple, si vous souhaitez sélectionner la 2ème ligne par groupe, vous pouvez utiliser la syntaxe suivante :

df %>%
  group_by(team) %>%
  arrange(desc(points)) %>%
  filter(row_number()==2)

Ou vous pouvez utiliser la syntaxe suivante pour sélectionner la dernière ligne par groupe :

df %>%
  group_by(team) %>%
  arrange(desc(points)) %>%
  filter(row_number()==n())

Ressources additionnelles

Comment organiser les lignes dans R
Comment compter les observations par groupe dans R
Comment trouver la valeur maximale par groupe dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *