Chapitre 5 Filtres
Dans cette section, nous allons apprendre à filtrer des données, une étape cruciale pour l’analyse et la préparation des données. Filtrer les données permet de sélectionner des sous-ensembles spécifiques répondant à certains critères, ce qui est essentiel pour se concentrer sur les informations pertinentes.
5.1 Filtrer des données avec dplyr
Le package dplyr fournit une syntaxe claire et expressive pour manipuler les données, en particulier pour filtrer des observations avec la fonction filter()
. Voici quelques exemples pratiques.
5.1.1 Exemple 1 : Filtrer avec des conditions simples
Supposons que vous avez un jeu de données contenant des informations sur les voitures et que vous voulez filtrer les voitures ayant une consommation supérieure à 25 miles per gallon (mpg).
# Charger le package dplyr
library(dplyr)
# Jeu de données exemple
data(mtcars)
# Filtrer les voitures ayant une consommation supérieure à 25 mpg
voitures_efficaces <- mtcars %>%
filter(mpg > 25)
# Afficher les résultats
head(voitures_efficaces)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
5.1.2 Exemple 2 : Combiner plusieurs filtres
Vous pouvez combiner plusieurs conditions pour affiner encore plus votre sélection. Par exemple, filtrons les voitures qui ont à la fois une consommation supérieure à 25 mpg et plus de 4 cylindres.
# Filtrer avec plusieurs conditions
voitures_efficaces <- mtcars %>%
filter(mpg > 25, cyl > 4)
# Afficher les résultats
head(voitures_efficaces)
## [1] mpg cyl disp hp drat wt qsec vs am gear carb
## <0 rows> (or 0-length row.names)
5.1.3 Exemple 3 : Filtrer les données manquantes (NA)
Les valeurs manquantes peuvent poser problème lors de l’analyse. Il est souvent nécessaire de les filtrer. Utilisons la fonction is.na() pour exclure les observations avec des valeurs manquantes.
# Exemple d'un dataframe avec des NA
data_with_na <- data.frame(
x = c(1, 2, NA, 4, 5),
y = c("A", NA, "C", "D", "E")
)
# Filtrer les lignes sans NA dans la colonne 'x'
clean_data <- data_with_na %>%
filter(!is.na(x))
# Afficher les résultats
head(clean_data)
## x y
## 1 1 A
## 2 2 <NA>
## 3 4 D
## 4 5 E
5.2 R vs Excel
Dans Excel, filtrer des données se fait généralement à l’aide des filtres automatiques ou des fonctions comme FILTRE ou SOUS.TOTAL. Cependant, lorsque vous travaillez avec de grands ensembles de données ou que vous avez besoin de combiner plusieurs conditions de filtrage, Excel peut devenir limité ou fastidieux.
5.2.1 Exemples de comparaison avec Excel
5.2.1.1 Filtre automatique dans Excel
- Dans Excel, vous pouvez utiliser le filtre automatique pour sélectionner des lignes qui correspondent à un critère particulier (par exemple, toutes les voitures avec une consommation supérieure à 25 mpg). Cela nécessite de sélectionner la colonne, d’appliquer un filtre et de sélectionner manuellement la condition.
- En R : Le même résultat peut être obtenu instantanément en utilisant
filter(mpg > 25)
, sans avoir besoin d’intervenir manuellement pour chaque nouveau critère.
5.2.1.2 Combinaison de conditions dans Excel
- Dans Excel, combiner plusieurs conditions peut nécessiter d’ajouter des colonnes auxiliaires avec des formules pour chaque critère, ou d’utiliser la fonctionnalité de filtre avancé. Cela peut devenir complexe et difficile à maintenir.
- En R : Avec dplyr, combiner plusieurs conditions dans une seule commande est simple et clair :
filter(mpg > 25, cyl > 4)
. Cela rend l’analyse plus lisible et modifiable, en particulier sur de grands jeux de données.
5.2.1.3 Filtrage des valeurs manquantes (NA) dans Excel
- Excel permet de filtrer les cellules vides, mais cela peut devenir fastidieux si vous devez gérer plusieurs colonnes et plusieurs feuilles de calcul. De plus, les manipulations manuelles augmentent le risque d’erreurs.
- En R : Le filtrage des valeurs manquantes est simple avec
filter(!is.na(x))
, ce qui peut être appliqué rapidement à n’importe quelle colonne de votre jeu de données. Vous pouvez également enchaîner plusieurs filtres sans ajouter de complexité.
5.2.2 Avantages de R par rapport à Excel
- Automatisation et reproductibilité : En R, vous pouvez enregistrer votre processus de filtrage sous forme de script, ce qui vous permet de réappliquer automatiquement ces filtres à d’autres jeux de données ou de les modifier facilement. Excel, en revanche, nécessite souvent des manipulations manuelles répétées, ce qui rend difficile la reproductibilité.
- Scalabilité : Lorsque vous travaillez avec des ensembles de données volumineux, Excel peut devenir lent ou ne pas fonctionner correctement. R, avec dplyr, est conçu pour manipuler efficacement de grands volumes de données.
- Flexibilité : R vous permet de créer des filtres complexes et d’enchaîner des opérations de manière fluide, sans avoir à passer par des étapes intermédiaires ou des formules compliquées.
- Traçabilité : En R, chaque étape de votre analyse est enregistrée dans un script, offrant une traçabilité complète de toutes les opérations effectuées. Cela facilite la vérification des étapes de traitement, le partage de la méthodologie avec d’autres, et le suivi des modifications apportées au fil du temps, contrairement à Excel où les changements manuels peuvent être difficiles à retracer.
5.3 Exercice
À partir de la base SIRENE StockUnitéLégale, extraire les centrales d’achat alimentaires.
Challenge : Réalisez cet exercice à la fois en R et en Excel, puis comparez l’efficacité des deux approches. Quel outil vous semble le plus adapté pour filtrer des données complexes ou volumineuses ? Quelles difficultés avez-vous rencontrées dans Excel que R a simplifiées ?