Au commencement était Hadley Wickham
Le premier jour, Hadley Wickham créa ggplot2
.
(Plus précisément en 2005)
Le deuxième jour, Hadley Wickham créa reshape2
et plyr
.
En parallèle il développa également :
lubridate
, stringr
devtools
, testthat
, roxygen2
…(Plus précisément entre 2007 et 2012)
Le troisième jour Hadley Wickham formalisa et publia un article sur le concept de tidy data (Journal of Statistical Software, 2014).
https://www.jstatsoft.org/article/view/v059i10
(À la même période il alla travailler pour RStudio)
Le quatrième jour :
reshape2
fut progressivement remplacé par tidyr
plyr
fut progressivement remplacé par dplyr
.(Plus précisément à partir de 2014)
Le cinquième jour apparut l’expression “hadleyverse” pour désigner l’ensemble de ces extensions.
(Plus précisément autour de 2015)
Enfin, le sixième jour, l’expression hadleyverse fut officiellement remplacée par tidyverse, et un site et un package du même nom furent mis en place.
(Plus précisément fin 2016)
Le tidyverse est un ensemble de packages développés depuis une dizaine d’années, qui ont évolué au fil du temps pour former un ensemble d’outils relativement cohérents.
Il s’agit évidemment d’un travail collectif (139 contributeurs pour ggplot2
, 144 contributeurs pour dplyr
, etc.)
import de données tabulaires au format texte (CSV, TSV…)
import de données depuis Excel
haven
: import de données depuis SAS, SPSS, Stata
rvest
: extractions de données du Web
httr
: interrogation d’API Web
DBI
, dbplyr
: connexion à des bases de données
version améliorée des data frame
remettre en forme des données non-tidy
manipuler des données tidy
travail et recodages de factors
manipuler des chaînes de caractères
manipuler des dates
“Grammaire des graphiques” pour R
outils pour la programmation fonctionnelle
implémentation du pipe
rlang
: outils de plus bas niveau
tidyverse
est aussi le nom d’une “méta-extension”.
Son rôle est d’installer et de charger les extensions qui constituent le “coeur” du tidyverse :
readr
et readxl
permettent d’importer des données tabulaires depuis des fichiers texte ou Excel.
Une interface intégrée à RStudio facilite leur usage en permettant de modifier les options d’importation et d’avoir un aperçu en temps réel.
Aperçu
Comparées aux fonctions de base de R, les fonctions de readr
:
stringsAsFactors = FALSE
)Ces fonctions d’import de données retournent un data.frame (tableau de données) d’un type particulier : un tibble.
À la différence des data.frame, les tibbles :
rownames
)Aperçu
Les tibbles restent totalement compatibles avec les data frames.
Les fonctions d’extensions comme dplyr
ou tidyr
renvoient des tibbles.
ggplot2
et dplyr
, sont prévues pour fonctionner avec des données tidytidyr
fournit des outils pour rendre les données tidyLes trois principes d’un jeu de données tidy :
Données messy :
id | adresse |
---|---|
1 | 3 rue des fleurs 43100 Bonjour-les-Oeillères |
2 | Impasse des lilas 01410 Patelin-en-Bresse |
3 | 12 avenue Wickham 21230 Taille-d’Iversse |
Données tidy :
id | adresse | code_postal | commune |
---|---|---|---|
1 | 3 rue des fleurs | 43100 | Bonjour-les-Oeillères |
2 | Impasse des lilas | 01410 | Patelin-en-Bresse |
3 | 12 avenue Hadley | 21230 | Taille-d’Iversse |
Données messy :
country | 2002 | 2007 |
---|---|---|
Belgium | 10.3 | 10.4 |
France | 59.9 | 61.1 |
Données tidy :
country | annee | population |
---|---|---|
Belgium | 2002 | 10.3 |
France | 2002 | 59.9 |
Belgium | 2007 | 10.4 |
France | 2007 | 61.1 |
dep_time | origin | dest | carrier | name |
---|---|---|---|---|
517 | EWR | IAH | UA | United Air Lines Inc. |
533 | LGA | IAH | UA | United Air Lines Inc. |
542 | JFK | MIA | AA | American Airlines Inc. |
544 | JFK | BQN | B6 | JetBlue Airways |
Données tidy :
dep_time | origin | dest | carrier |
---|---|---|---|
517 | EWR | IAH | UA |
533 | LGA | IAH | UA |
542 | JFK | MIA | AA |
544 | JFK | BQN | B6 |
carrier | name |
---|---|
AA | American Airlines Inc. |
B6 | JetBlue Airways |
UA | United Air Lines Inc. |
ggplot2
propose une implémentation d’une grammaire des graphiques (Grammar of Graphics, Leland Wilkinson, 2005).
Il fournit une syntaxe cohérente, qui peut sembler complexe à première vue mais qui est très “efficace”.
Aperçu
dplyr
propose des outils de manipulation et transformation de données au format tidy.
Ces outils se présentent sous la forme de “verbes” qu’on peut assembler grâce à un opérateur de type pipe.
Aperçu
tidyr
propose des outils pour mettre en forme des données (les passer au format tidy).
Comme pour dplyr
, ce sont des verbes qui peuvent s’utiliser avec le pipe.
Aperçu (?)
modelr
)ggvis
)Traduction française : “ordocosme”, “organivers”… ?
broom
)Le modèle des tidy data s’exporte dans d’autres domaines.
tidytext
Appliquer les concepts du tidyverse à l’analyse textuelle.
book | linenumber | chapter | word |
---|---|---|---|
Sense & Sensibility | 1010 | 7 | he |
Sense & Sensibility | 1010 | 7 | said |
Sense & Sensibility | 1010 | 7 | only |
Sense & Sensibility | 1010 | 7 | one |
Sense & Sensibility | 1010 | 7 | gentleman |
Sense & Sensibility | 1010 | 7 | there |
Sense & Sensibility | 1010 | 7 | besides |
Plus d’informations : https://www.tidytextmining.com/
sf
sf
(simple features), nouvelle implémentation de la gestion des objets spatiaux.
Avant, avec sp
:
## Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
## ..@ data :'data.frame': 606 obs. of 4 variables:
## .. ..$ NAME : Factor w/ 602 levels "Abidjan","Abu Zaby",..: 368 33 472 322 419 593 390 194 263 115 ...
## .. ..$ COUNTRY : Factor w/ 165 levels "Afghanistan",..: 124 124 124 124 124 124 124 153 124 124 ...
## .. ..$ POPULATION: num [1:606] 468000 416000 5825000 152000 1160000 ...
## .. ..$ CAPITAL : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
## ..@ coords.nrs : num(0)
## ..@ coords : num [1:606, 1:2] 33.1 40.6 30.5 150.8 56.2 ...
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : NULL
## .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
## ..@ bbox : num [1:2, 1:2] -165.3 -53.2 177.1 78.2
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
## .. .. ..$ : chr [1:2] "min" "max"
## ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
## .. .. ..@ projargs: chr "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
Avec sf
:
## Simple feature collection with 6 features and 3 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: 30.45333 ymin: 56.84654 xmax: 150.78 ymax: 68.96355
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
## # A tibble: 6 x 4
## NAME COUNTRY POPULATION geometry
## <fct> <fct> <dbl> <sf_geometry [degree]>
## 1 Murmansk Russia 468000 POINT (33.08604 68.96355)
## 2 Arkhangelsk Russia 416000 POINT (40.64616 64.52067)
## 3 Saint Petersburg Russia 5825000 POINT (30.45333 59.95189)
## 4 Magadan Russia 152000 POINT (150.78 59.571)
## 5 Perm' Russia 1160000 POINT (56.23246 58.00024)
## 6 Yekaterinburg Russia 1620000 POINT (60.61013 56.84654)
Compatible avec les verbes de dplyr
et (bientôt) avec ggplot2
.
Quel R enseigner ?
Avantages du tidyverse
Inconvénients
ggplot2
)Expérience personnelle : passage à une formule d’introduction à R sur quatre jours.
ggplot2
puis recodages de variablesdplyr
et rmarkdown