Cette leçon comporte quelques prérequis sur votre compréhension de R. Si vous n’avez pas été au bout des bases de R avec des données tabulées, je vous suggère de le faire d’abord. Avoir une expérience dans un autre langage de programmation peut aussi vous aider. Si vous souhaitez savoir par où commencer, je vous recommande de parcourir les excellents tutoriels de Programming Historian sur Python.
A la fin de cette leçon, vous serez en mesure de :
Les données que vous trouverez “dans la nature” sont rarement dans un format qui rend possible une analyse et vous aurez à les manipuler avant d’explorer les questions que vous souhaitez leur poser. Cette manipulation peut prendre plus de temps que l’analyse elle-même ! Dans ce tutoriel, nous apprendrons quelques techniques de base for manipuler, gérer et administrer nos données dans R. Notamment, nous nous fonderons sur la philosophie des “données propres”(tidy data) telle que l’a présentée Hadley Wickham.
Selon Wickham, la donnée est “propre” quand elle répond à ces trois critères :
Remplir ces critères nous permet de juger si la donnée est organisée ou pas. Ces critères nous fournissent également un schéma standard et un ensemble d’outils pour gérer les formes les plus communes de désordre dans les données :
Avantage peut-être encore plus important, garder nos données dans ce format propre nous permet d’utiliser une galerie de paquets dans le “tidyverse”, qui ont été spécifiquement conçus pour fonctionner avec des données propres. En nous assurant que nos données en entrée et en sortie sont propres, nous n’auront qu’un petit nombre d’outils à utiliser pour résoudre un grand nombre de questions. De plus, nous pouvons combiner, manipuler et scinder des jeux de données comme bon nous semble.
Dans ce tutoriel, nous traiterons particulièrement le paquet dplyr du tidyverse. Mais cela vaut la peine de mentionner brièvement quelques autres paquets que nous utiliserons :
magittr : ce paquet donne accès à l’opérateur pipe et rendre le code plus facile à lire.
ggplot2 : ce paquet utilise la “grammaire des graphiques” pour vous permettre de donner des visualisations simples à réaliser de vos données.
readr : ce paquet met à disposition un import plus rapide et intuitive de données tabulées, comme des fichiers csv.
tibble : ce paquet nous donne accès à une nouvelle conceptualisation des tableaux de données qui seront plus simples à traiter et à imprimer.
Si vous ne l’avez pas déjà fait, vous devriez installer et charger le “tidyverse” avant de commencer. Assurez-vous en outre que vous disposez de la dernière version de R et de la dernière version de Rstudio installées sur votre système d’exploitation.
Copiez le code ci-dessous dans Rstudio. Pour les exécuter, il vous faut mettre ces lignes en surbrillance et presser Ctrl+enter (ou Cmd+enter sur Mac OS):
# Installer les bibliothèques tidyverse et charger ces bibliothèques
# Ne vous inquiétez pas si cela prend un peu de temps
install.packages("tidyverse", repos = "http://cran.us.r-project.org")
## le package 'tidyverse' a été décompressé et les sommes MD5 ont été vérifiées avec succés
##
## Les packages binaires téléchargés sont dans
## C:\Users\dbelveze\AppData\Local\Temp\RtmpWQ98oH\downloaded_packages
library(tidyverse)
## Warning: le package 'tidyverse' a été compilé avec la version R 4.3.3
## Warning: le package 'ggplot2' a été compilé avec la version R 4.3.2
## Warning: le package 'tibble' a été compilé avec la version R 4.3.2
## Warning: le package 'tidyr' a été compilé avec la version R 4.3.2
## Warning: le package 'readr' a été compilé avec la version R 4.3.3
## Warning: le package 'purrr' a été compilé avec la version R 4.3.2
## Warning: le package 'dplyr' a été compilé avec la version R 4.3.3
## Warning: le package 'stringr' a été compilé avec la version R 4.3.2
## Warning: le package 'forcats' a été compilé avec la version R 4.3.3
## Warning: le package 'lubridate' a été compilé avec la version R 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Utilisons un exemple pour voir comment dplyr peut nous aider en tant qu’historien : importons les données de recensement décennal des Etats-Unis entre 1790 et 2010. Téléchargez les données en cliquant ici et placez le fichier téléchargé dans le dossier que vous utiliserez pour traiter les exemples présentés dans ce tutoriel.
Etant donné que les données sont présentées dans un fichier csv, nous allons utiliser la commande read_csv() comprise dans le paquet readr du tidyverse.
Après avoir importé les données, vous remarquerez qu’elles sont disposées en trois colonnes : une pour la population, une pour l’année et une pour l’État. Ces données sont d’emblée dans un format propre, ce qui nous permet de nous livrer à une multitude d’explorations.
Pour cet exemple, créons une visualisation de la croissance de la population en Californie et dans l’État de New York afin d’avoir une meilleure compréhension des migrations vers l’Ouest. On va utiliser dplyr pour filtrer nos données, de telle sorte qu’elles ne contiennent que les informations relatives aux États qui nous intéressent et on va utiliser ggplot2 pour visualiser cette information. Cet exercice n’a d’autre but que de nous donner une idée de ce que dplyr peut faire, ne vous en faites pas si vous ne comprenez pas le code utilisé à ce stade :
# Filtrer le jeu pour ne traiter que les données relatives à la Californie et à l'État de New York
california_and_new_york_state_populations<-us_state_populations_import %>%
filter(state %in% c("California", "New York"))
# Editer le graphique des courbes de population de la Californie et de l'État de New York
ggplot(data=california_and_new_york_state_populations, aes(x=year, y=population, color=state)) +
geom_line() +
geom_point()
Comme on peut le voir, la population de la Californie a cru de façon considérable comparée à celle de l’État de New York. Cet exemple en particulier peut sembler évident, compte tenu de l’histoire des migrations aux Etats-Unis, mais le code en lui-même nous procure une base à partir de laquelle poser une foule de questions semblables. Par exemple, avec une modification rapide du code, on peut créer un graphique équivalent pour deux autres États comme le Mississipi et la Virginie.
# Filtrer le jeu pour ne traiter que les données relatives au Mississippi et à la Virginie
mississippi_and_virginia_state_populations<-us_state_populations_import %>%
filter(state %in% c("Mississippi", "Virginia"))
# Éditer le graphique des courbes de population du Mississippi et de la Virginie
ggplot(data=mississippi_and_virginia_state_populations, aes(x=year, y=population, color=state)) +
geom_line() +
geom_point()
La possibilité de faire des changements rapides dans le code et de réanalyser nos données est un élément fondamental de l’analyse exploratoire de données (AED). Plutôt que d’essayer de “prouver” une hypothèse, l’analyse exploratoire de données nous aide à mieux comprendre nos données et à les interroger. Pour les Historiens, l’AED nous apporte un moyen aisé de savoir quand on peut approfondir un sujet ou bien quand on doit reprendre de la hauteur, et c’est un sujet sur lequel R excelle.
Avant de jeter un coup d’oeil à dplyr, nous devons examiner ce qu’est l’opérateur pipe (%>%) dans R, car nous l’utiliserons souvent dans nos exemples. Comme mentionné plus haut, l’opérateur pipe fait partie du paquet magrittr mis au point par Stefan Milton Bache et Hadley Wickham et est inclus dans le tidyverse. Son nom rend hommage au peintre surréaliste René Magritte qui, dans son oeuvre “La trahison des images”, a représenté une pipe célèbre en plaçant en dessous la légende “ceci n’est pas une pipe”.
L’opérateur pipe nous permet de passer ce qui est à gauche du pipe comme la première variable de la fonction qui est donnée à droite. Bien que cela puisse paraître étrange au premier abord, une fois que vous l’aurez appris, vous trouverez qu’il rend votre code plus lisible en vous évitant d’enchâsser vos opérations les unes dans les autres. Ne vous inquiétez pas si tout cela vous semble encore confus pour l’instant ; ça va s’éclairer progressivement avec des exemples.
Supposons que nous ayons un intérêt à obtenir la racine carrée de la valeur pour la population de chaque État, puis d’en faire la somme et finalement la moyenne. A l’évidence, cette mesure ne nous sert à rien, mais cela permet de montrer à quel point un code réalisé avec R peut rapidement devenir difficile à lire. Normalement, nous pourrions enchâsser ces opérations :
mean(sum(sqrt(us_state_populations_import$population)))
## [1] 1256925
Comme on peut le voir, avec des commandes enchâssées, il est difficile de se rappeler combien de parenthèses doivent être fournies et cela donne un code assez pataud. Pour minimiser cela, certains vont créer des vecteurs temporaires entre chaque appel de commandes.
# Obtenir la racine carrée de la population de chaque Etat
sqrt_state_populations_vector<-sqrt(us_state_populations_import$population)
# Obtenir la somme de toutes les racines carrées des variables temporaires
sum_sqrt_state_populations_vector<-sum(sqrt_state_populations_vector)
# obtenir la moyenne de la variable temporaire
mean_sum_sqrt_state_populations_vector<-mean(sum_sqrt_state_populations_vector)
# Afficher la moyenne
mean_sum_sqrt_state_populations_vector
## [1] 1256925
Vous obtenez certes la même réponse, mais de façon beaucoup plus lisible. En revanche, cela peut rapidement encombrer votre espace de travail si vous oubliez de supprimer les vecteurs temporaires. L’opérateur pipe fait tout cela oour vous. Voici le même code mais avec l’opérateur pipe :
us_state_populations_import$population%>%sqrt%>%sum%>%mean
## [1] 1256925
C’est bien plus simple à lire, et vous pourriez même rendre cette commande encore plus claire en l’écrivant sur plusieurs lignes :
# assurez-vous que l'opérateur soit à la fin de la ligne
us_state_populations_import$population%>%
sqrt%>%
sum%>%
mean
## [1] 1256925
Notez que les vecteurs ou les tableaux que crée l’opérateur pipe sont supprimés lorsque le processus est achevé. Si vous souhaitez les conserver, vous devrez en faire de nouvelles variables :
permanent_sqrt_and_sum_state_populations_vector <- us_state_populations_import$population%>%sqrt%>%sum%>%mean
permanent_sqrt_and_sum_state_populations_vector
## [1] 1256925
Maintenant que nous comprenons comment fonctionne le pipe, nous sommes en mesure de commencer à examiner et manipuler des données. Malheureusement, pour les historiens, il n’y a que peu de jeux de données disponibles ; peut-être pourriez-vous contribuer à ce que cela change en diffusant vos propres données ! Nous allons partir du paquet de données historiques créé par Lincoln Mullen
Allons-y, installons et chargeons ce paquet :
Ce paquet contient un échantillon de données historiques sur les Etats-Unis. Les données de recensement qu’on a utilisées plus tôt font partie de cet échantillon. Jusqu’à la fin de ce tutoriel, on va particulièrement travailler avec le jeu de données early_colleges qui contient des données sur les universités (colleges en américains) fondées avant 1848. Commençons par charger les données et y jeter un coup d’oeil :
# Vérifiez avant d'exécuter ce code que le paquet historydata a bien été installé et chargé
data(early_colleges)
early_colleges
## # A tibble: 65 × 6
## college original_name city state established sponsorship
## <chr> <chr> <chr> <chr> <int> <chr>
## 1 Harvard <NA> Camb… MA 1636 Congregati…
## 2 William and Mary <NA> Will… VA 1693 Anglican
## 3 Yale <NA> New … CT 1701 Congregati…
## 4 Pennsylvania, Univ. of <NA> Phil… PA 1740 Nondenomin…
## 5 Princeton College of New Je… Prin… NJ 1746 Presbyteri…
## 6 Columbia King's College New … NY 1754 Anglican
## 7 Brown <NA> Prov… RI 1765 Baptist
## 8 Rutgers Queen's College New … NJ 1766 Dutch Refo…
## 9 Dartmouth <NA> Hano… NH 1769 Congregati…
## 10 Charleston, Coll. Of <NA> Char… SC 1770 Anglican
## # ℹ 55 more rows
Comme vous pouvez l’observer, ce jeu de données contient le nom actuel de chaque université, son nom à l’origine, la ville et l’État dans lequel il a été fondé, la date de sa fondation et l’organisation qui le parraine. Comme on l’a vu plus haut, avant de commencer à travailler sur ce jeu de données, il est important de penser à la façon dont on va organiser ces données. Voyons si certaines de nos données ne se trouveraient pas dans un format “impropre”. Voyez-vous des cellules qui ne répondraient pas aux trois critères que remplissent les données “propres” ?
Si vous avez répondu le parrainage de Harvard, vous avez la bonne réponse. En plus de mentionner le premier parrainage de cette université, la cellule comporte l’information de son changement de parrainage en 1805. Habituellement, on veut conserver dans nos données autant d’information que possible, mais pour rester dans la perspective de ce tutoriel, nous allons modifier la colonne pour ne conserver que les parrainages lors de la fondation.
early_colleges[1,6] <- "congregational"
early_colleges
## # A tibble: 65 × 6
## college original_name city state established sponsorship
## <chr> <chr> <chr> <chr> <int> <chr>
## 1 Harvard <NA> Camb… MA 1636 congregati…
## 2 William and Mary <NA> Will… VA 1693 Anglican
## 3 Yale <NA> New … CT 1701 Congregati…
## 4 Pennsylvania, Univ. of <NA> Phil… PA 1740 Nondenomin…
## 5 Princeton College of New Je… Prin… NJ 1746 Presbyteri…
## 6 Columbia King's College New … NY 1754 Anglican
## 7 Brown <NA> Prov… RI 1765 Baptist
## 8 Rutgers Queen's College New … NJ 1766 Dutch Refo…
## 9 Dartmouth <NA> Hano… NH 1769 Congregati…
## 10 Charleston, Coll. Of <NA> Char… SC 1770 Anglican
## # ℹ 55 more rows
A présent que nos données se présentent dans un format propre, nous pouvons leur donner forme avec le paquet dplyr.
Dplyr est un autre élément du tidyverse qui met à votre disposition des fonctions utiles pour manipuler et transformer des données. Parce que nous gardons nos données “propres”, nous n’avons besoin que d’un nombre réduit d’outils pour les explorer. Comparé à R seul, utiliser dplyr est souvent plus rapide et vous garantit que si les données en entrée sont propres, les données transformées le seront aussi, et ce qui est peut-être encore plus important, dplyr facilite la lecture de votre code et utilise des “verbes” qui sont intuitifs la plupart du temps. Chaque fonction dans dplyr correspond à l’un de ces verbes, dont les plus importants sont : filtrer(filter), sélectionner(select), arranger(arrange), muter(mutate) et récapituler(summarise, avec le s de l’orthographe britannique). Parcourons-les un à un pour voir comment ils fonctionnent dans la pratique.
Si on regarde les données comprises dans early_colleges, on peut observer qu’il y a un grand nombre de “NA” dans la colonne des noms originaux. NA (Not Available) signifie qu’on n’a aucune donnée correspondante et qu’on pourrait vouloir visualiser nos données en soustrayant cette colonne. la fonction select de dplyr nous donne la possibilité de le faire. On prend le tableau de données qu’on veut manipuler comme le premier argument, suivi d’une liste qui indique quelles colonnes on souhaite conserver :
# supprime la colonne des noms originaux en utiliser select()
# Notez que vous n'avez pas à préfixer le nom de la colonne par un $
# dplyr traite automatiquement la virgule comme un AND
select(early_colleges, college, city, state, established, sponsorship)
## # A tibble: 65 × 5
## college city state established sponsorship
## <chr> <chr> <chr> <int> <chr>
## 1 Harvard Cambridge MA 1636 congregational
## 2 William and Mary Williamsburg VA 1693 Anglican
## 3 Yale New Haven CT 1701 Congregational
## 4 Pennsylvania, Univ. of Philadelphia PA 1740 Nondenominational
## 5 Princeton Princeton NJ 1746 Presbyterian
## 6 Columbia New York NY 1754 Anglican
## 7 Brown Providence RI 1765 Baptist
## 8 Rutgers New Brunswick NJ 1766 Dutch Reformed
## 9 Dartmouth Hanover NH 1769 Congregational
## 10 Charleston, Coll. Of Charleston SC 1770 Anglican
## # ℹ 55 more rows
Allons encore plus loin et voyons cpmment on peut écrire ceci en utilisant l’opérateur pipe (%>%) :
early_colleges%>%
select(college, city, state, established, sponsorship)
## # A tibble: 65 × 5
## college city state established sponsorship
## <chr> <chr> <chr> <int> <chr>
## 1 Harvard Cambridge MA 1636 congregational
## 2 William and Mary Williamsburg VA 1693 Anglican
## 3 Yale New Haven CT 1701 Congregational
## 4 Pennsylvania, Univ. of Philadelphia PA 1740 Nondenominational
## 5 Princeton Princeton NJ 1746 Presbyterian
## 6 Columbia New York NY 1754 Anglican
## 7 Brown Providence RI 1765 Baptist
## 8 Rutgers New Brunswick NJ 1766 Dutch Reformed
## 9 Dartmouth Hanover NH 1769 Congregational
## 10 Charleston, Coll. Of Charleston SC 1770 Anglican
## # ℹ 55 more rows
Devoir référencer toutes les colonnes qu’on veut conserver juste pour se débarrasser d’une seule est un peu fastidieux. Nous pouvons à la place utiliser le symbole moins ( - ) pour signifier que nous voulons enlever une colonne.
early_colleges%>%
select(-original_name)
## # A tibble: 65 × 5
## college city state established sponsorship
## <chr> <chr> <chr> <int> <chr>
## 1 Harvard Cambridge MA 1636 congregational
## 2 William and Mary Williamsburg VA 1693 Anglican
## 3 Yale New Haven CT 1701 Congregational
## 4 Pennsylvania, Univ. of Philadelphia PA 1740 Nondenominational
## 5 Princeton Princeton NJ 1746 Presbyterian
## 6 Columbia New York NY 1754 Anglican
## 7 Brown Providence RI 1765 Baptist
## 8 Rutgers New Brunswick NJ 1766 Dutch Reformed
## 9 Dartmouth Hanover NH 1769 Congregational
## 10 Charleston, Coll. Of Charleston SC 1770 Anglican
## # ℹ 55 more rows
La fonction filter() réalise la même chose que la fonction select() à ceci près qu’au lieu de choisir le nom d’une colonne, on peut utiliser filter() pour filtrer les lignes qui réalisent une certaine condition. Par exemple, on peut visualiser toutes les universités qui ont existé avant la fin du 18ème siècle.
early_colleges%>%
filter(established < 1800)
## # A tibble: 20 × 6
## college original_name city state established sponsorship
## <chr> <chr> <chr> <chr> <int> <chr>
## 1 Harvard <NA> Camb… MA 1636 congregati…
## 2 William and Mary <NA> Will… VA 1693 Anglican
## 3 Yale <NA> New … CT 1701 Congregati…
## 4 Pennsylvania, Univ. of <NA> Phil… PA 1740 Nondenomin…
## 5 Princeton College of New … Prin… NJ 1746 Presbyteri…
## 6 Columbia King's College New … NY 1754 Anglican
## 7 Brown <NA> Prov… RI 1765 Baptist
## 8 Rutgers Queen's College New … NJ 1766 Dutch Refo…
## 9 Dartmouth <NA> Hano… NH 1769 Congregati…
## 10 Charleston, Coll. Of <NA> Char… SC 1770 Anglican
## 11 Hampden-Sydney <NA> Hamp… VA 1775 Presbyteri…
## 12 Transylvania <NA> Lexi… KY 1780 Disciples …
## 13 Georgia, Univ. of <NA> Athe… GA 1785 Secular
## 14 Georgetown <NA> Wash… DC 1789 Roman Cath…
## 15 North Carolina, Univ. of <NA> Chap… NC 1789 Secular
## 16 Vermont, Univ. of <NA> Burl… VT 1791 Nondenomin…
## 17 Williams <NA> Will… MA 1793 Congregati…
## 18 Tennessee, Univ. of Blount College Knox… TN 1794 Secular
## 19 Union College <NA> Sche… NY 1795 Presbyteri…
## 20 Marietta <NA> Mari… OH 1797 Congregati…
La commande mutate vous permet d’ajouter une commande à votre tableau de données. Ici nous avons la ville et l’État qui se trouvent dans deux colonnes séparées. Nous pouvons utiliser la commande “coller” pour combiner ces deux chaînes de caractères en une seule tout en gardant un séparateur. Plaçons ces deux informations dans une seule et même colonne intitulée “location”.
early_colleges%>%mutate(location=paste(city,state,sep=","))
## # A tibble: 65 × 7
## college original_name city state established sponsorship location
## <chr> <chr> <chr> <chr> <int> <chr> <chr>
## 1 Harvard <NA> Camb… MA 1636 congregati… Cambrid…
## 2 William and Mary <NA> Will… VA 1693 Anglican William…
## 3 Yale <NA> New … CT 1701 Congregati… New Hav…
## 4 Pennsylvania, Uni… <NA> Phil… PA 1740 Nondenomin… Philade…
## 5 Princeton College of N… Prin… NJ 1746 Presbyteri… Princet…
## 6 Columbia King's Colle… New … NY 1754 Anglican New Yor…
## 7 Brown <NA> Prov… RI 1765 Baptist Provide…
## 8 Rutgers Queen's Coll… New … NJ 1766 Dutch Refo… New Bru…
## 9 Dartmouth <NA> Hano… NH 1769 Congregati… Hanover…
## 10 Charleston, Coll.… <NA> Char… SC 1770 Anglican Charles…
## # ℹ 55 more rows
Encore une fois, il faut vous rappeler que dplyr ne conserve pas les données ni ne manipule le document original. A la place, il crée un tableau de données temporaire à chaque étape. Si vous souhaitez le conserver, vous devez lui associer une variable permanente.
early_colleges_with_location <- early_colleges%>%mutate(location=paste(city,state, sep=","))
# Voir le nouveau tableau avec la colonne "location" ajoutée
early_colleges_with_location
## # A tibble: 65 × 7
## college original_name city state established sponsorship location
## <chr> <chr> <chr> <chr> <int> <chr> <chr>
## 1 Harvard <NA> Camb… MA 1636 congregati… Cambrid…
## 2 William and Mary <NA> Will… VA 1693 Anglican William…
## 3 Yale <NA> New … CT 1701 Congregati… New Hav…
## 4 Pennsylvania, Uni… <NA> Phil… PA 1740 Nondenomin… Philade…
## 5 Princeton College of N… Prin… NJ 1746 Presbyteri… Princet…
## 6 Columbia King's Colle… New … NY 1754 Anglican New Yor…
## 7 Brown <NA> Prov… RI 1765 Baptist Provide…
## 8 Rutgers Queen's Coll… New … NJ 1766 Dutch Refo… New Bru…
## 9 Dartmouth <NA> Hano… NH 1769 Congregati… Hanover…
## 10 Charleston, Coll.… <NA> Char… SC 1770 Anglican Charles…
## # ℹ 55 more rows
La fonction arrange() nous permet d’ordonner nos colonnes d’une autre façon. Pour l’instant, les universités sont organisées par année de fondation en ordre croissant. Plaçons les par ordre décroissant. Dans notre cas, à partir de la fin de la Guerre américano-mexicaine :
early_colleges%>%
arrange(desc(established))
## # A tibble: 65 × 6
## college original_name city state established sponsorship
## <chr> <chr> <chr> <chr> <int> <chr>
## 1 Wisconsin, Univ. of <NA> Madison WI 1848 Secular
## 2 Earlham <NA> Richmond IN 1847 Quaker
## 3 Beloit <NA> Beloit WI 1846 Congregati…
## 4 Bucknell <NA> Lewisburg PA 1846 Baptist
## 5 Grinnell <NA> Grinnell IA 1846 Congregati…
## 6 Mount Union <NA> Alliance OH 1846 Methodist
## 7 Louisiana, Univ. of <NA> New Orleans LA 1845 Secular
## 8 U.S. Naval Academy <NA> Annapolis MD 1845 Secular
## 9 Mississipps, Univ. of <NA> Oxford MI 1844 Secular
## 10 Holy Cross <NA> Worchester MA 1843 Roman Cath…
## # ℹ 55 more rows
La dernière fonction-clé de dplyr est summarise() (n’oubliez pas, avec un s comme dans la forme britannique). Summarise() occupe une fonction ou une opération et est habituellement utilisé pour créer un tableau de données qui contient des données statistiques récapitulatives destinées à fournir des graphiques. Nous allons l’utiliser pour calculer la date de fondation moyenne des colleges avant 1848
early_colleges%>%summarise(mean(established))
## # A tibble: 1 × 1
## `mean(established)`
## <dbl>
## 1 1810.
Maintenant que nous avons parcouru les cinq principaux verbes de dplyr, nous pouvons les utiliser pour créer rapidement une visualisation de nos données. Allons-y, créons un graphique en barres pour afficher le nombre d’universités laïques ou religieuses fondées avant la guerre de 1812:
secular_colleges_before_1812<-early_colleges%>%
filter(established < 1812)%>%
mutate(`est laïque`=ifelse(sponsorship!="Secular", "non", "oui"))
ggplot(secular_colleges_before_1812) +
geom_bar(aes(x=`est laïque`, fill=`est laïque`))+
labs(x="est-ce que l'université est laïque ?") +
ylab("nombre d'établissements")
Noter ici que la variable est laïque est mise entre apostrophes arrières (backtick). Cela permet à la fois de gérer le fait qu’elle occupe au lieu d’un seul deux termes séparés par une espace, ainsi que le i trema présent dans le mot “laïque”, caractère qui ne fait pas partie des 128 présents dans la table ASCII et peut donc poser problème dans l’exécution de certains programmes.
Encore une fois, en n’apportant qu’une modification rapide à notre code, nous pouvons aussi visualiser le nombre de colleges laïques par rapport au nombre d’universités religieuses fondées depuis le début de la Guerre de 1812 :
secular_colleges_after_1812<-early_colleges%>%
filter(established > 1812)%>%
mutate(`est laïque`=ifelse(sponsorship!="Secular", "non", "oui"))
ggplot(secular_colleges_after_1812) +
geom_bar(aes(x=`est laïque`, fill=`est laïque`))+
labs(x="Est-ce que l'université est laïque ?")+
ylab("nombre d'établissements")
Ce tutoriel devrait vous mettre sur la bonne voie pour bien concevoir l’organisation et la manipulation de vos données avec R. Plus tard, vous souhaiterez sans doute progresser en visualisation de vos données. Je vous recommande de regarder le paquet ggplot2 pour trouver des outils qui fonctionneront bien avec dplyr. De plus vous pouvez être tenté d’examiner quelques autres fonctions accessibles dans dplyr pour affiner vos compétences. Dans les deux cas, ce guide vous permet de disposer d’une bonne base pour aller plus loin et couvrir les problèmes courants que vous pourriez rencontrer dans la gestion de données.
Nabeel Siddiqui est un Professeur Assistant en médias numériques à l’Université de Susquehanna
Nabeel Siddiqui, “Gestion et manipulation des données avec R”, traduit par Damien Belvèze, Programming Historian en français 2 (2024),