Bienvenue dans le Tidyverse !

Dans le petit monde de la data science, il existe quelques superhéros, connus des statisticiens les plus aguerris comme des nouveaux arrivants tapant leurs premières lignes de code. Parmi ces superhéros, le plus famous d’entre eux reste Hadley Wickham, Chief Scientist chez RStudio, rockstaR et (co)auteur de nombreux packages indispensables à un usage débutant comme confirmé de R.

Si vous avez passé plus de deux heures sur R ces dix dernières années, il y a de fortes chances pour que vous ayez utilisé l’un des packages développés par Hadley Wickham, programmeur, auteur et professeur si prolifique qu’Internet a fini par donner un nom à son univers : le Hadleyverse… qui devient en 2016 le « Tidyverse » — ou « ordocosme », dans la langue de Molière !

Hadley qui ?

Originaire de Nouvelle-Zélande, Hadley est aujourd’hui chief Scientist à RStudio, incontournable environnement de travail, et professeur adjoint de statistiques à l’University of Auckland. Il est particulièrement reconnu pour avoir développé des packages destinés à faciliter la manipulation et visualisation de données, ainsi que la programmation. Avec un seul mot d’ordre “make data science easier, faster, and more fun”.

Devenu une superstar chez les data nerds en une quinzaine d’année, Wickham est l’auteur de packages incontournables, que l’on peut classer en trois catégories :
– ceux destinés aux data sciences pures, comme le célèbre ggplot2, permettant de visualiser vos data, tidyr et dplyr, pour des données bien ordonnées, ou encore lubridate, indispensable pour manipuler des data temporelles.
– ceux pour l’importation, comme readr, readxl, haven et xml2, pour lire respectivement les fichiers csv, Excel, SASS/SPSS/Stata et XML, httr, pour vous connecter aux APIs, et rvest, pour scraper des sites web.
– et enfin, ceux orientés développement, avec devtools, interface générale de programmation (qui contient notamment la célèbre fonction install_github), roxygen2, pour la documentation, et testthat, qui, comme son nom l’indique, permet de tester vos packages.

Au-delà de son travail de développement, Wickham est également un penseur des données — des théories sur lesquelles reposent ses packages et qui définissent aujourd’hui la façon de penser R et les données de manière globale. On lui doit de nombreux articles et ouvrages, dont notamment :
Tidy Data, un article dans lequel il décrit ce que sont les données « propres », un principe sur lequel reposent, entre autres, tidyr et dplyr.
– A layered grammar of graphics, sur lequel repose ggplot2.
– Advanced R et R Packages, deux livres sur l’usage de R.

 

Goodbye Hadleyverse, Hello Tidyverse!

 

Lors de sa keynote à la conférence UseR! 2016, Mr W. a proposé l’utilisation de l’appellation « tidyverse », pour faire référence à l’ensemble des packages que nous décrivons ici. (Si vous êtes pressé, ce point est abordé à la 44e minute de la vidéo ci-dessus… Cela dit, nous vous conseillons de regarder l’intervention complète !).

Un changement de nom, d’abord car le développement des packages n’est pas que de son fait — « There are lots and lots of people contributing » avance-t-il. Alors, l’ordocosme, qu’est-ce que c’est ? Schématiquement résume-t-il, « tidyverse = tidy data + tidy APIs ». L’objectif, à terme, étant de créer des packages qui se coordonnent parfaitement les uns aux autres, et de faciliter la prise en main de tous ces packages : « once you’ve learned the tools in one package, it’s trivial to combine them with tools from other packages« .

Les packages de l’ordocosme

Comme vous le savez, rien de mieux qu’une démonstration par l’exemple ! Alors, pour que nous regardions ensemble l’importance de Mr Wickham dans le monde de R, nous allons tirer de la liste des packages disponibles sur le CRAN le subset de ceux affichant Hadley comme auteur, coauteur ou contributeur.

Hadley Wickham

 

Télécharger la liste depuis le CRAN

Commençons par télécharger la base de données des packages du CRAN.

download.file("http://cran.r-project.org/web/packages/packages.rds", "packages.rds")
pckgrds <- readRDS(file="packages.rds")
pckg <- as.data.frame(pckgrds[, -14], stringsAsFactors = FALSE)

Sélection avec dplyr

Package incontournable pour qui se lance dans la manipulation de données, dplyr offre une véritable grammar of data-manipulation. Mais ça, en tant que lecteur assidu de notre site, vous le savez déjà : nous en parlons dans ce billet sur notre blog, ainsi que sur cet aide-mémoire.

Pour récupérer les packages indiquant Hadley comme auteur, coauteur ou contributeur, nous utiliserons la fonction filter sur la colonne Author de notre dataframe.

library(dplyr)
pckg_hadley <- filter(pckg, grepl("Hadley Wickham", pckg$Author))
length(unique(pckg_hadley$Package)) 
## [1] 81

Formatage des dates avec lubridate

Ah… Le casse-tête des dates lors de la manipulation de données… Forme universellement disparate, les heures et dates des datasets diffèrent d’un continent à l’autre, d’un logiciel à l’autre, d’un document à l’autre. Pas toujours facile, de prime abord, de travailler avec les formats temporels : c’est là qu’intervient lubridate, package développé par notre homme du jour, qui vous permet de manipuler simplement ce format.

Pour normaliser vos chaînes de caractères au format R, vous devez faire appel aux fonctions de la forme ymd (pour Year Month Day, facile non ?) pour une chaîne comme “2015-08-16”. Vous l’aurez deviné, il suffit ensuite d’utiliser dmy pour Day Month Year, ymd_hms pour Year Month Date Hour Minute Second, et ainsi de suite. L’avantage ? Plus besoin de préciser les caractères de séparation, ni de faire appel à plusieurs fonctions.

library(lubridate)
pckg_hadley$Published <- ymd(pckg_hadley$Published)

Visualisation avec ggplot2

Développé en 2005 (eh oui, ça ne nous rajeunit pas), ggplot2 est devenu en 10 ans le must-have de la data visualisation avec R. Basé sur la grammar of graphics, ce package est destiné à faciliter la représentation de vos données. Preuve de son succès ? Cet outil est utilisé par Google, Facebook, Twitter, ou encore le New York Times. Et pour garder en tête toutes les bonnes pratiques, jetez un oeil à notre aide-mémoire !

library(ggplot2)
ggplot(pckg_hadley, aes(x=Published, y=..count..)) + 
  geom_line(stat="bin", bins = 20) +
  xlab("Date") + 
  ylab("Volume") + 
  ggtitle("Publications sur le CRAN indiquant Hadley comme (co)auteur ou contributeur.")

L'Hadleyverse sur le CRAN

 

Pour aller plus loin :
– hadleyverse, un package pour installer les packages de l’Hadleyverse/Tidyverse
– Le site officiel d’Hadley Wickham
– Ses articles


À propos de l'auteur

Colin Fay

Colin Fay

Data scientist & R Hacker


Commentaires


À lire également