Comment utiliser un filtre conditionnel dans dplyr



Vous pouvez utiliser la syntaxe de base suivante pour appliquer un filtre conditionnel sur un bloc de données à l’aide des fonctions du package dplyr dans R :

library(dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team=='A' ~ points > 15,
                   team=='B' ~ points > 20,
                   TRUE ~ points > 30))

Cet exemple particulier filtre les lignes d’un bloc de données où la valeur de la colonne de points est supérieure à une certaine valeur, conditionnelle à la valeur de la colonne d’équipe .

Connexe : Une introduction à case_when() dans dplyr

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

Exemple : Comment utiliser le filtre conditionnel dans dplyr

Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur divers joueurs de basket-ball :

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1    A     10
2    A     12
3    A     17
4    B     18
5    B     24
6    B     29
7    C     29
8    C     34
9    C     35

Supposons maintenant que nous souhaitions appliquer le filtre conditionnel suivant :

  • Ne conservez que les lignes pour les joueurs de l’équipe A dont les points sont supérieurs à 15.
  • Ne conservez que les lignes pour les joueurs de l’équipe B où les points sont supérieurs à 20.
  • Ne conservez que les lignes pour les joueurs de l’équipe C où les points sont supérieurs à 30.

Nous pouvons utiliser les fonctions filter() et case_when() du package dplyr pour appliquer ce filtre conditionnel sur la trame de données :

library(dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team=='A' ~ points > 15,
                   team=='B' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1    A     17
2    B     24
3    B     29
4    C     34
5    C     35

Les lignes du bloc de données sont désormais filtrées là où la valeur dans la colonne des points est supérieure à une certaine valeur, conditionnelle à la valeur dans la colonne équipe .

Remarque n°1 : Dans la fonction case_when() , nous utilisons TRUE dans le dernier argument pour représenter toutes les valeurs de la colonne d’équipe qui ne sont pas égales à « A » ou « B ».

Note #2 : Vous pouvez trouver la documentation complète de la fonction dplyr case_when() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans dplyr :

Comment filtrer par numéro de ligne à l’aide de dplyr
Comment filtrer selon plusieurs conditions à l’aide de dplyr
Comment utiliser un filtre « pas inclus » dans dplyr

Ajouter un commentaire

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