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