R : Comment utiliser %in% pour filtrer les lignes avec une valeur dans la liste



Vous pouvez utiliser la syntaxe de base suivante avec l’opérateur %in% dans R pour filtrer les lignes contenant une valeur dans une liste :

library(dplyr)

#specify team names to keep
team_names <- c('Mavs', 'Pacers', 'Nets')

#select all rows where team is in list of team names to keep
df_new <- df %>% filter(team %in% team_names)

Cette syntaxe particulière filtre un bloc de données pour conserver uniquement les lignes où la valeur de la colonne team est égale à l’une des trois valeurs du vecteur team_names que nous avons spécifié.

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

Exemple : utilisation de %in% pour filtrer les lignes avec une valeur dans la liste

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

#create data frame
df <- data.frame(team=c('Mavs', 'Pacers', 'Mavs', 'Celtics', 'Nets', 'Pacers'),
                 points=c(104, 110, 134, 125, 114, 124),
                 assists=c(22, 30, 35, 35, 20, 27))

#view data frame
df

     team points assists
1    Mavs    104      22
2  Pacers    110      30
3    Mavs    134      35
4 Celtics    125      35
5    Nets    114      20
6  Pacers    124      27

Supposons que nous souhaitions filtrer le bloc de données pour qu’il contienne uniquement les lignes dont la valeur dans la colonne d’équipe est égale à l’un des noms d’équipe suivants :

  • Mavs
  • Pacers
  • Filets

Nous pouvons utiliser la syntaxe suivante avec l’opérateur %in% pour ce faire :

library(dplyr)

#specify team names to keep
team_names <- c('Mavs', 'Pacers', 'Nets')

#select all rows where team is in list of team names to keep
df_new <- df %>% filter(team %in% team_names)

#view updated data frame
df_new

    team points assists
1   Mavs    104      22
2 Pacers    110      30
3   Mavs    134      35
4   Nets    114      20
5 Pacers    124      27

Notez que seules les lignes avec une valeur Mavs, Pacers ou Nets dans la colonne équipe sont conservées.

Si vous souhaitez filtrer les lignes où le nom de l’équipe ne figure pas dans une liste de noms d’équipe, ajoutez simplement un point d’exclamation ( ! ) devant le nom de la colonne :

library(dplyr)

#specify team names to not keep
team_names <- c('Mavs', 'Pacers', 'Nets')

#select all rows where team is not in list of team names to keep
df_new <- df %>% filter(!team %in% team_names)

#view updated data frame
df_new

     team points assists
1 Celtics    125      35

Notez que seules les lignes dont la valeur n’est pas égale à Mavs, Pacers ou Nets dans la colonne équipe sont conservées.

Remarque : Vous pouvez trouver la documentation complète de la fonction de filtre dans dplyr ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans dplyr :

Comment sélectionner la première ligne par groupe à l’aide de dplyr
Comment filtrer selon plusieurs conditions à l’aide de dplyr
Comment filtrer les lignes contenant une certaine chaîne à l’aide de dplyr

Ajouter un commentaire

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