Leçons du module (1/2)
Filtrer et Sélectionner des Données
Le Tidyverse est une collection de packages R conçus pour la science des données qui partagent la même philosophie de conception et la même structure de données. Le package principal pour la manipulation des données dans cette suite s'appelle dplyr.
dplyr introduit une série de fonctions ("verbes") qui rendent la manipulation des data frames très intuitive.
L'Opérateur Pipe (%>% ou |>)
La philosophie du Tidyverse repose sur la concaténation des opérations. L'opérateur pipe %>% (ou l'opérateur natif |> introduit dans R 4.1+) prend le résultat d'une expression et le passe comme premier argument à la fonction suivante. Cela évite d'imbriquer continuellement les fonctions ou de créer trop de variables temporaires.
# Sans pipe :
filter(select(df, name, age), age > 20)
# Avec la pipe :
df %>%
select(name, age) %>%
filter(age > 20)
Verbes de dplyr pour Filtrer et Sélectionner
Les trois verbes fondamentaux pour extraire des informations d'un data frame sont :
1. select()
Sélectionne des colonnes spécifiques du data frame. Vous pouvez lister les noms des colonnes que vous souhaitez conserver ou exclure en utilisant le signe -.
# Sélectionne les colonnes 'name' et 'salary'
select(df, name, salary)
# Supprime la colonne 'address'
select(df, -address)
2. filter()
Filtre les lignes en fonction d'une ou plusieurs conditions logiques.
# Filtre les lignes où age est supérieur à 30
filter(df, age > 30)
# Filtre avec des conditions multiples (AND logique)
filter(df, age > 30, department == "HR")
3. arrange()
Ordonne les lignes en fonction des valeurs d'une ou plusieurs colonnes. Par défaut, le tri est croissant. Pour un tri décroissant, on utilise desc().
# Trie par age (croissant)
arrange(df, age)
# Trie par salary (décroissant)
arrange(df, desc(salary))
À vous de jouer
Exercice 1 : Sélectionner des colonnes
Étant donné le data frame df, sélectionnez les colonnes name et age en utilisant la fonction select() et sauvegardez le résultat dans df_selected.
Afficher l'indice
Utilisez : df_selected <- select(df, name, age)
Solution disponible après 3 tentatives
Filtrez les lignes du data frame df dans lesquelles la colonne age est strictement supérieure à 18, en sauvegardant le résultat dans df_adults.
Afficher l'indice
Utilisez la fonction filter(df, age > 18) et assignez le résultat à df_adults.
Solution disponible après 3 tentatives
Utilisez l'opérateur pipe %>% pour enchaîner les opérations : sélectionnez d'abord la colonne name du data frame df, puis filtrez pour ne conserver que les enregistrements avec age > 18. Sauvegardez dans res.
Afficher l'indice
Écrivez : res <- df %>% filter(age > 18) %>% select(name)
Solution disponible après 3 tentatives
Triez les lignes du data frame df en fonction de la colonne salary dans l'ordre décroissant en utilisant arrange() et desc(). Sauvegardez dans df_sorted.
Afficher l'indice
Utilisez arrange(desc(salary)) au sein d'un pipeline ou comme argument direct.
Solution disponible après 3 tentatives
Écrivez un pipeline complet sur df : filtrez les enregistrements avec department égal à 'IT', sélectionnez les colonnes name et salary, et triez le résultat selon salary (ordre croissant). Sauvegardez le résultat final dans res.
Afficher l'indice
Utilisez le pipe %>% pour enchaîner filter(department == 'IT'), select(name, salary) et arrange(salary).
Solution disponible après 3 tentatives