1 Introduction

Aujourd’hui, nous commencerons notre exploration du package {dplyr} ! Notre premier verbe sur la liste est select qui permet de conserver ou de supprimer des variables de votre dataframe. Choisir vos variables est la première étape du nettoyage de vos données.

Fig: la function select().
Fig: la function select().

C’est parti !

2 Objectifs d’apprentissage

  • Vous pouvez conserver ou supprimer des colonnes d’un dataframe en utilisant la fonction dplyr::select() du package {dplyr}.

  • Vous pouvez sélectionner une plage ou une combinaison de colonnes à l’aide d’opérateurs comme le deux-points (:), le point d’exclamation (!) et la fonction c().

  • Vous pouvez sélectionner des colonnes en fonction des motifs de leurs noms avec des fonctions d’aide comme starts_with(), ends_with(), contains() et everything().

  • Vous pouvez utiliser rename() et select() pour changer les noms des colonnes.

3 L’ensemble de données COVID-19 de Yaoundé

Dans cette leçon, nous analysons les résultats d’une enquête sérologique sur la COVID-19 menée à Yaoundé, au Cameroun, fin 2020. L’enquête estimait combien de personnes avaient été infectées par la COVID-19 dans la région, en testant les anticorps IgG et IgM. L’ensemble complet des données peut être obtenu sur Zenodo, et l’article peut être consulté ici.

Passez un peu de temps à parcourir cet ensemble de données. Chaque ligne correspond à un patient interrogé. Il y a des variables démographiques, socio-économiques et liées à la COVID. Les résultats des tests d’anticorps IgG et IgM sont dans les colonnes igg_result et igm_result.

yaounde <- read_csv(here::here("data/yaounde_data.csv"))
yaounde  

Notez que le jeu de donnée COVID-19 Yaoundé est en anglais !

Pour cette leçon, nous utiliserons cette version en anglais. Mais dans d’autres leçons, nous utiliserons une version partialement en français.

Gauche : l’équipe d’enquête de Yaoundé. Droite : un test d’anticorps étant administré.
Gauche : l’équipe d’enquête de Yaoundé. Droite : un test d’anticorps étant administré.

4 Introduction à select()

Fig : la fonction select(). (Dessin adapté d’Allison Horst).
Fig : la fonction select(). (Dessin adapté d’Allison Horst).

dplyr::select() nous permet de choisir quelles colonnes (variables) conserver ou supprimer.

Nous pouvons sélectionner une colonne par son nom :

yaounde %>% select(age) 

Ou nous pouvons sélectionner une colonne par sa position :

yaounde %>% select(3) # `age` est la 3ème colonne

Pour sélectionner plusieurs variables, nous les séparons par des virgules :

yaounde %>% select(age, sex, igg_result)
  • Sélectionnez les variables poids et taille dans le dataframe yaounde.

  • Sélectionnez les colonnes 16 et 22 dans le dataframe yaounde.


Pour la prochaine partie du tutoriel, créons un sous-ensemble plus petit des données, appelé yao.

yao <-
  yaounde %>% select(age,
                     sex,
                     highest_education,
                     occupation,
                     is_smoker,
                     is_pregnant,
                     igg_result,
                     igm_result)
yao

4.1 Sélectionner des gammes de colonnes avec :

L’opérateur : permet de sélectionner une plage de variables consécutives :

yao %>% select(age:occupation) # Sélectionnez toutes les colonnes de `age` à `occupation`

Nous pouvons également spécifier une plage avec des numéros de colonne :

yao %>% select(1:4) # Sélectionnez les colonnes 1 à 4
  • Avec le dataframe yaounde, sélectionnez les colonnes entre symptoms et sequelae, inclusivement. (“Inclusivement” signifie que vous devriez également inclure symptoms et sequelae dans la sélection.)

4.2 Exclure des colonnes avec !

Le point d’exclamation nie une sélection :

yao %>% select(!age) # Sélectionnez toutes les colonnes sauf `age`

Pour supprimer une plage de colonnes consécutives, nous utilisons, par exemple, !age:occupation :

yao %>% select(!age:occupation) # Supprimez les colonnes de `age` à `occupation`

Pour supprimer plusieurs colonnes non consécutives, placez-les à l’intérieur de !c() :

yao %>% select(!c(age, sex, igg_result)) # Supprimez les colonnes de `age`, `sex`, et `igg_result
  • Du dataframe yaounde, retirez toutes les colonnes entre highest_education et consultation, inclusivement.

5 Fonctions auxiliaires pour select()

dplyr possède un certain nombre de fonctions auxiliaires pour faciliter la sélection en utilisant des motifs des noms de colonnes. Jetons un œil à certaines d’entre elles.

5.1 starts_with() et ends_with()

Ces deux fonctions auxiliaires fonctionnent exactement comme leurs noms l’indiquent !

yao %>% select(starts_with("is_")) # Colonnes qui commencent par "is"
yao %>% select(ends_with("_result")) # Colonnes qui finissent par "result"

5.2 contains()

contains() aide à sélectionner les colonnes qui contiennent une certaine chaîne :

yaounde %>% select(contains("drug")) # Colonnes contenant la chaîne "drug"

5.3 everything()

Une autre fonction auxiliaire, everything(), correspond à toutes les variables qui n’ont pas encore été sélectionnées.

# D'abord, `is_pregnant`, puis toutes les autres colonnes.
yao %>% select(is_pregnant, everything())

C’est souvent utile pour établir l’ordre des colonnes.

Disons que nous voulions amener la colonne is_pregnant au début du dataframe yao, nous pourrions écrire manuellement tous les noms des colonnes :

yao %>% select(is_pregnant, 
               age, 
               sex, 
               highest_education, 
               occupation, 
               is_smoker, 
               igg_result, 
               igm_result)

Mais ce serait pénible pour des dataframes plus grands, comme notre dataframe original yaounde. Dans un tel cas, nous pouvons utiliser everything() :

# Amenez `is_pregnant` à l'avant du dataframe
yaounde %>% select(is_pregnant, everything())

Cette fonction auxiliaire peut être combinée avec beaucoup d’autres.

# Amenez les colonnes qui se terminent par "result" à l'avant du dataframe
yaounde %>% select(ends_with("result"), everything())
  • Sélectionnez toutes les colonnes dans le dataframe yaounde qui commencent par “is_”.

  • Déplacez les colonnes qui commencent par “is_” au début du dataframe yaounde.

6 Changer les noms de colonnes avec rename()

dplyr::rename() est utilisée pour changer les noms des colonnes :

# Renommez `age` et `sex` en `patient_age` et `patient_sex`
yaounde %>% 
  rename(patient_age = age, 
         patient_sex = sex)

Le fait que le nouveau nom vienne en premier dans la fonction (rename(NOUVEAUNOM = VIEUXNOM)) est parfois déroutant. Vous devriez vous y habituer avec le temps.

6.1 Renommer dans select()

Vous pouvez également renommer des colonnes tout en les sélectionnant :

# Sélectionnez `age` et `sex`, et renommez-les en `patient_age` et `patient_sex`
yaounde %>% 
  select(patient_age = age, 
         patient_sex = sex)

Conclusion !

J’espère que cette première leçon vous a permis de voir à quel point les verbes {dplyr} sont intuitifs et utiles ! Ceci est la première d’une série de verbes de base pour la manipulation de données : rendez-vous à la prochaine leçon pour en savoir plus.

Fig: Basic Data Wrangling Dplyr Verbs.
Fig: Basic Data Wrangling Dplyr Verbs.

Contributeurs

Les membres de l’équipe suivants ont contribué à cette leçon :

Références

Certains matériaux de cette leçon ont été adaptés des sources suivantes :

L’artwork a été adapté de :