Au fil des différents chapitres, nous avons abordé diverses fonctions utiles au quotidien et permettant de visualiser ses données. Ce chapitre se propose de les regrouper.

Chargeons tout d’abord quelques fichiers de données à titre d’exemple.

Inspection visuelle des données

La particularité de R par rapport à d’autres logiciels comme Modalisa ou SPSS est de ne pas proposer, par défaut, de vue des données sous forme de tableau. Ceci peut parfois être un peu déstabilisant dans les premiers temps d’utilisation, même si l’on perd vite l’habitude et qu’on finit par se rendre compte que « voir » les données n’est pas forcément un gage de productivité ou de rigueur dans le traitement.

Néanmoins, R propose une interface permettant de visualiser le contenu d’un tableau de données à l’aide de la fonction View :

Sous RStudio, on peut aussi afficher la visionneusee (viewer) en cliquant sur la petite icône en forme de tableau située à droite de la ligne d’un tableau de données dans l’onglet Environment du quadrant supérieur droit (cf. figure ci-après).

Icône pour afficher une vue du contenu d’un tableau
Icône pour afficher une vue du contenu d’un tableau

Dans tous les cas, RStudio lancera le viewer dans un onglet dédié dans le quadrant supérieur gauche. Le visualiseur de RStudio est plus avancé que celui-de base fournit par R. Il est possible de trier les données selon une variable en cliquant sur le nom de cette dernière. Il y a également un champs de recherche et un bouton Filter donnant accès à des options de filtrage avancées.

La visionneuse de données de RStudio
La visionneuse de données de RStudio

summary

La fonction summary permet d’avoir une vue résumée d’une variable. Elle s’applique à tout type d’objets (y compris un tableau de données entier) et s’adapte à celui-ci.

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   18.0    35.0    48.0    48.2    60.0    97.0 
      Ouvrier specialise         Ouvrier qualifie 
                     203                      292 
              Technicien Profession intermediaire 
                      86                      160 
                   Cadre                  Employe 
                     260                      594 
                   Autre                     NA's 
                      58                      347 
       id            age          sexe     
 Min.   :   1   Min.   :18.0   Homme: 899  
 1st Qu.: 501   1st Qu.:35.0   Femme:1101  
 Median :1000   Median :48.0               
 Mean   :1000   Mean   :48.2               
 3rd Qu.:1500   3rd Qu.:60.0               
 Max.   :2000   Max.   :97.0               
                                           
                                                 nivetud   
 Enseignement technique ou professionnel court       :463  
 Enseignement superieur y compris technique superieur:441  
 Derniere annee d'etudes primaires                   :341  
 1er cycle                                           :204  
 2eme cycle                                          :183  
 (Other)                                             :256  
 NA's                                                :112  
     poids                         occup     
 Min.   :   78   Exerce une profession:1049  
 1st Qu.: 2222   Chomeur              : 134  
 Median : 4631   Etudiant, eleve      :  94  
 Mean   : 5536   Retraite             : 392  
 3rd Qu.: 7627   Retire des affaires  :  77  
 Max.   :31092   Au foyer             : 171  
                 Autre inactif        :  83  
                      qualif    freres.soeurs  
 Employe                 :594   Min.   : 0.00  
 Ouvrier qualifie        :292   1st Qu.: 1.00  
 Cadre                   :260   Median : 2.00  
 Ouvrier specialise      :203   Mean   : 3.28  
 Profession intermediaire:160   3rd Qu.: 5.00  
 (Other)                 :144   Max.   :22.00  
 NA's                    :347                  
          clso                              relig    
 Oui        : 936   Pratiquant regulier        :266  
 Non        :1037   Pratiquant occasionnel     :442  
 Ne sait pas:  27   Appartenance sans pratique :760  
                    Ni croyance ni appartenance:399  
                    Rejet                      : 93  
                    NSP ou NVPR                : 40  
                                                     
                         trav.imp           trav.satisf 
 Le plus important           : 29   Satisfaction  :480  
 Aussi important que le reste:259   Insatisfaction:117  
 Moins important que le reste:708   Equilibre     :451  
 Peu important               : 52   NA's          :952  
 NA's                        :952                       
                                                        
                                                        
 hard.rock  lecture.bd peche.chasse cuisine    bricol    
 Non:1986   Non:1953   Non:1776     Non:1119   Non:1147  
 Oui:  14   Oui:  47   Oui: 224     Oui: 881   Oui: 853  
                                                         
                                                         
                                                         
                                                         
                                                         
 cinema     sport        heures.tv    
 Non:1174   Non:1277   Min.   : 0.00  
 Oui: 826   Oui: 723   1st Qu.: 1.00  
                       Median : 2.00  
                       Mean   : 2.25  
                       3rd Qu.: 3.00  
                       Max.   :12.00  
                       NA's   :5      

str

La fonction str est plus complète que names. Elle liste les différentes variables, indique leur type et donne le cas échéant des informations supplémentaires ainsi qu’un échantillon des premières valeurs prises par cette variable :

'data.frame':   2000 obs. of  20 variables:
 $ id           : int  1 2 3 4 5 6 7 8 9 10 ...
 $ age          : int  28 23 59 34 71 35 60 47 20 28 ...
 $ sexe         : Factor w/ 2 levels "Homme","Femme": 2 2 1 1 2 2 2 1 2 1 ...
 $ nivetud      : Factor w/ 8 levels "N'a jamais fait d'etudes",..: 8 NA 3 8 3 6 3 6 NA 7 ...
 $ poids        : num  2634 9738 3994 5732 4329 ...
 $ occup        : Factor w/ 7 levels "Exerce une profession",..: 1 3 1 1 4 1 6 1 3 1 ...
 $ qualif       : Factor w/ 7 levels "Ouvrier specialise",..: 6 NA 3 3 6 6 2 2 NA 7 ...
 $ freres.soeurs: int  8 2 2 1 0 5 1 5 4 2 ...
 $ clso         : Factor w/ 3 levels "Oui","Non","Ne sait pas": 1 1 2 2 1 2 1 2 1 2 ...
 $ relig        : Factor w/ 6 levels "Pratiquant regulier",..: 4 4 4 3 1 4 3 4 3 2 ...
 $ trav.imp     : Factor w/ 4 levels "Le plus important",..: 4 NA 2 3 NA 1 NA 4 NA 3 ...
 $ trav.satisf  : Factor w/ 3 levels "Satisfaction",..: 2 NA 3 1 NA 3 NA 2 NA 1 ...
 $ hard.rock    : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 1 1 1 1 ...
 $ lecture.bd   : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 1 1 1 1 ...
 $ peche.chasse : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 2 2 1 1 ...
 $ cuisine      : Factor w/ 2 levels "Non","Oui": 2 1 1 2 1 1 2 2 1 1 ...
 $ bricol       : Factor w/ 2 levels "Non","Oui": 1 1 1 2 1 1 1 2 1 1 ...
 $ cinema       : Factor w/ 2 levels "Non","Oui": 1 2 1 2 1 2 1 1 2 2 ...
 $ sport        : Factor w/ 2 levels "Non","Oui": 1 2 2 2 1 2 1 1 1 2 ...
 $ heures.tv    : num  0 1 0 2 3 2 2.9 1 2 2 ...

La fonction str est essentielle à connaître et peut s’appliquer à n’importe quel type d’objet. C’est un excellent moyen de connaître en détail la structure d’un objet. Cependant, les résultats peuvent être parfois trop détaillés et on lui priviligiera dans certains cas les fonctions suivantes.

glimpse (dplyr)

L’extension dplyr (voir le chapitre dédié), propose une fonction glimpse (ce qui signifie aperçu en anglais) qui permet de visualiser rapidement et de manière condensée le contenu d’un tableau de données.

Observations: 2,000
Variables: 20
$ id            <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …
$ age           <int> 28, 23, 59, 34, 71, 35, 60, 47, 20,…
$ sexe          <fct> Femme, Femme, Homme, Homme, Femme, …
$ nivetud       <fct> "Enseignement superieur y compris t…
$ poids         <dbl> 2634.4, 9738.4, 3994.1, 5731.7, 432…
$ occup         <fct> "Exerce une profession", "Etudiant,…
$ qualif        <fct> Employe, NA, Technicien, Technicien…
$ freres.soeurs <int> 8, 2, 2, 1, 0, 5, 1, 5, 4, 2, 3, 4,…
$ clso          <fct> Oui, Oui, Non, Non, Oui, Non, Oui, …
$ relig         <fct> Ni croyance ni appartenance, Ni cro…
$ trav.imp      <fct> Peu important, NA, Aussi important …
$ trav.satisf   <fct> Insatisfaction, NA, Equilibre, Sati…
$ hard.rock     <fct> Non, Non, Non, Non, Non, Non, Non, …
$ lecture.bd    <fct> Non, Non, Non, Non, Non, Non, Non, …
$ peche.chasse  <fct> Non, Non, Non, Non, Non, Non, Oui, …
$ cuisine       <fct> Oui, Non, Non, Oui, Non, Non, Oui, …
$ bricol        <fct> Non, Non, Non, Oui, Non, Non, Non, …
$ cinema        <fct> Non, Oui, Non, Oui, Non, Oui, Non, …
$ sport         <fct> Non, Oui, Oui, Oui, Non, Oui, Non, …
$ heures.tv     <dbl> 0.0, 1.0, 0.0, 2.0, 3.0, 2.0, 2.9, …

lookfor (questionr)

L’extension questionr propose une fonction lookfor, inspirée de Stata, qui permet de lister les différentes variables d’un fichier de données :

Lorsque l’on a un gros tableau de données avec de nombreuses variables, il peut être difficile de retrouver la ou les variables d’intérêt. Il est possible d’indiquer à lookfor un mot-clé pour limiter la recherche. Par exemple :

Il est à noter que si la recherche n’est pas sensible à la casse (i.e. aux majuscules et aux minuscules), elle est sensible aux accents. Il est aussi possible de fournir plusieurs expressions de recherche.

La fonction lookfor est par ailleurs compatible avec les étiquettes de variable de l’extension labelled, les étiquettes étant prise en compte dans la recherche d’une variable.

Enfin, il est possible d’afficher plus de détails avec l’option detailed = TRUE.

À noter, le résultats renvoyé par lookfor est un tableau de données qui peut ensuite être aisément manipulé.

describe (questionr)

L’extension questionr fournit également une fonction bien pratique pour décrire les différentes variables d’un tableau de données. Il s’agit de describe. Faisons de suite un essai :

[2000 obs. x 20 variables] tbl_df tbl data.frame

$id: 
integer: 1 2 3 4 5 6 7 8 9 10 ...
min: 1 - max: 2000 - NAs: 0 (0%) - 2000 unique values

$age: 
integer: 28 23 59 34 71 35 60 47 20 28 ...
min: 18 - max: 97 - NAs: 0 (0%) - 78 unique values

$sexe: 
nominal factor: "Femme" "Femme" "Homme" "Homme" "Femme" "Femme" "Femme" "Homme" "Femme" "Homme" ...
2 levels: Homme | Femme
NAs: 0 (0%)

$nivetud: 
nominal factor: "Enseignement superieur y compris technique superieur" NA "Derniere annee d'etudes primaires" "Enseignement superieur y compris technique superieur" "Derniere annee d'etudes primaires" "Enseignement technique ou professionnel court" "Derniere annee d'etudes primaires" "Enseignement technique ou professionnel court" NA "Enseignement technique ou professionnel long" ...
8 levels: N'a jamais fait d'etudes | A arrete ses etudes, avant la derniere annee d'etudes primaires | Derniere annee d'etudes primaires | 1er cycle | 2eme cycle | Enseignement technique ou professionnel court | Enseignement technique ou professionnel long | Enseignement superieur y compris technique superieur
NAs: 112 (5.6%)

$poids: 
numeric: 2634.3982157 9738.3957759 3994.1024587 5731.6615081 4329.0940022 8674.6993828 6165.8034861 12891.640759 7808.8720636 2277.160471 ...
min: 78.0783403 - max: 31092.14132 - NAs: 0 (0%) - 1877 unique values

$occup: 
nominal factor: "Exerce une profession" "Etudiant, eleve" "Exerce une profession" "Exerce une profession" "Retraite" "Exerce une profession" "Au foyer" "Exerce une profession" "Etudiant, eleve" "Exerce une profession" ...
7 levels: Exerce une profession | Chomeur | Etudiant, eleve | Retraite | Retire des affaires | Au foyer | Autre inactif
NAs: 0 (0%)

$qualif: 
nominal factor: "Employe" NA "Technicien" "Technicien" "Employe" "Employe" "Ouvrier qualifie" "Ouvrier qualifie" NA "Autre" ...
7 levels: Ouvrier specialise | Ouvrier qualifie | Technicien | Profession intermediaire | Cadre | Employe | Autre
NAs: 347 (17.3%)

$freres.soeurs: 
integer: 8 2 2 1 0 5 1 5 4 2 ...
min: 0 - max: 22 - NAs: 0 (0%) - 19 unique values

$clso: 
nominal factor: "Oui" "Oui" "Non" "Non" "Oui" "Non" "Oui" "Non" "Oui" "Non" ...
3 levels: Oui | Non | Ne sait pas
NAs: 0 (0%)

$relig: 
nominal factor: "Ni croyance ni appartenance" "Ni croyance ni appartenance" "Ni croyance ni appartenance" "Appartenance sans pratique" "Pratiquant regulier" "Ni croyance ni appartenance" "Appartenance sans pratique" "Ni croyance ni appartenance" "Appartenance sans pratique" "Pratiquant occasionnel" ...
6 levels: Pratiquant regulier | Pratiquant occasionnel | Appartenance sans pratique | Ni croyance ni appartenance | Rejet | NSP ou NVPR
NAs: 0 (0%)

$trav.imp: 
nominal factor: "Peu important" NA "Aussi important que le reste" "Moins important que le reste" NA "Le plus important" NA "Peu important" NA "Moins important que le reste" ...
4 levels: Le plus important | Aussi important que le reste | Moins important que le reste | Peu important
NAs: 952 (47.6%)

$trav.satisf: 
nominal factor: "Insatisfaction" NA "Equilibre" "Satisfaction" NA "Equilibre" NA "Insatisfaction" NA "Satisfaction" ...
3 levels: Satisfaction | Insatisfaction | Equilibre
NAs: 952 (47.6%)

$hard.rock: 
nominal factor: "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" ...
2 levels: Non | Oui
NAs: 0 (0%)

$lecture.bd: 
nominal factor: "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Non" ...
2 levels: Non | Oui
NAs: 0 (0%)

$peche.chasse: 
nominal factor: "Non" "Non" "Non" "Non" "Non" "Non" "Oui" "Oui" "Non" "Non" ...
2 levels: Non | Oui
NAs: 0 (0%)

$cuisine: 
nominal factor: "Oui" "Non" "Non" "Oui" "Non" "Non" "Oui" "Oui" "Non" "Non" ...
2 levels: Non | Oui
NAs: 0 (0%)

$bricol: 
nominal factor: "Non" "Non" "Non" "Oui" "Non" "Non" "Non" "Oui" "Non" "Non" ...
2 levels: Non | Oui
NAs: 0 (0%)

$cinema: 
nominal factor: "Non" "Oui" "Non" "Oui" "Non" "Oui" "Non" "Non" "Oui" "Oui" ...
2 levels: Non | Oui
NAs: 0 (0%)

$sport: 
nominal factor: "Non" "Oui" "Oui" "Oui" "Non" "Oui" "Non" "Non" "Non" "Oui" ...
2 levels: Non | Oui
NAs: 0 (0%)

$heures.tv: 
numeric: 0 1 0 2 3 2 2.9 1 2 2 ...
min: 0 - max: 12 - NAs: 5 (0.2%) - 30 unique values

Comme on le voit sur cet exemple, describe nous affiche le type des variables, les premières valeurs de chacune, le nombre de valeurs manquantes, le nombre de valeurs différentes (uniques) ainsi que quelques autres informations suivant le type de variables.

Il est possible de restreindre l’affichage à seulement quelques variables en indiquant le nom de ces dernières ou une expression de recherche (comme avec lookfor).

[2000 obs. x 20 variables] tbl_df tbl data.frame

$age: 
integer: 28 23 59 34 71 35 60 47 20 28 ...
min: 18 - max: 97 - NAs: 0 (0%) - 78 unique values

$trav.imp: 
nominal factor: "Peu important" NA "Aussi important que le reste" "Moins important que le reste" NA "Le plus important" NA "Peu important" NA "Moins important que le reste" ...
4 levels: Le plus important | Aussi important que le reste | Moins important que le reste | Peu important
NAs: 952 (47.6%)

$trav.satisf: 
nominal factor: "Insatisfaction" NA "Equilibre" "Satisfaction" NA "Equilibre" NA "Insatisfaction" NA "Satisfaction" ...
3 levels: Satisfaction | Insatisfaction | Equilibre
NAs: 952 (47.6%)

On peut également transmettre juste une variable :

[2000 obs.] 
nominal factor: "Femme" "Femme" "Homme" "Homme" "Femme" "Femme" "Femme" "Homme" "Femme" "Homme" ...
2 levels: Homme | Femme
NAs: 0 (0%)

         n   %
Homme  899  45
Femme 1101  55
Total 2000 100

Enfin, describe est également compatible avec les vecteurs labellisés.

[2000 obs. x 17 variables] tbl_df tbl data.frame

$milieu: Milieu de résidence
labelled double: 2 2 2 2 2 2 2 2 2 2 ...
min: 1 - max: 2 - NAs: 0 (0%) - 2 unique values
2 value labels: [1] urbain [2] rural

À noter, l’argument freq.n.max permets d’indiquer le nombre de modalités en-dessous duquel describe renverra également un tri à plat de la variable.

[1814 obs. x 5 variables] tbl_df tbl data.frame

$id_menage: Identifiant du ménage
numeric: 1 2 3 4 5 6 7 8 9 10 ...
min: 1 - max: 1814 - NAs: 0 (0%) - 1814 unique values

$taille: Taille du ménage (nombre de membres)
numeric: 7 3 6 5 7 6 15 6 5 19 ...
min: 1 - max: 31 - NAs: 0 (0%) - 30 unique values

$sexe_chef: Sexe du chef de ménage
labelled double: 2 1 1 1 1 2 2 2 1 1 ...
min: 1 - max: 2 - NAs: 0 (0%) - 2 unique values
2 value labels: [1] homme [2] femme

             n     %
[1] homme 1420  78.3
[2] femme  394  21.7
Total     1814 100.0

$structure: Structure démographique du ménage
labelled double: 4 2 5 4 4 4 5 2 5 5 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
6 value labels: [0] pas d'adulte [1] un adulte [2] deux adultes de sexe opposé [3] deux adultes de même sexe [4] trois adultes ou plus avec lien de parenté [5] adultes sans lien de parenté

                                                  n     %
[0] pas d'adulte                                  0   0.0
[1] un adulte                                    78   4.3
[2] deux adultes de sexe opposé                 439  24.2
[3] deux adultes de même sexe                    75   4.1
[4] trois adultes ou plus avec lien de parenté  920  50.7
[5] adultes sans lien de parenté                302  16.6
Total                                          1814 100.0

$richesse: Niveau de vie (quintiles)
labelled double: 1 2 2 1 1 3 2 5 4 3 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
5 value labels: [1] très pauvre [2] pauvre [3] moyen [4] riche [5] très riche

                   n     %
[1] très pauvre  335  18.5
[2] pauvre       357  19.7
[3] moyen        402  22.2
[4] riche        350  19.3
[5] très riche   370  20.4
Total           1814 100.0

skim (skimr)

L’extension skimr a pour objectif de fournir une fonction skim comme alternative à summary{base} pour les vecteurs et les tableaux de données afin de fournir plus de statistiques dans un format plus compact. Elle peut être appliquée à un vecteur donné ou directement à un tableau de données.


Attaching package: 'skimr'
The following object is masked from 'package:knitr':

    kable
The following object is masked from 'package:stats':

    filter

On peut noter que les variables sont regroupées par type.

Il est possible de sélectionner des variables à la manière de dplyr. Voir l’aide de contains.

Le support des vecteurs labellisés est encore en cours d’intégration.

Warning: No summary functions for vectors of class: haven_labelled.
Coercing to character

Warning: No summary functions for vectors of class: haven_labelled.
Coercing to character

Warning: No summary functions for vectors of class: haven_labelled.
Coercing to character

create_report (DataExplorer)

L’extension DataExplorer fournit des outils d’exploration graphique d’un fichier de données. En premier lieu, sa fonction create_report génère un rapport automatique à partir d’un tableau de données.

Le résultat de ce rapport est visible sur http://larmarange.github.io/analyse-R/data/hdv2003_DataExplorer_report.html.

L’extension fournit également différentes fonctions graphiques, présentées en détail dans la vignette inclue dans l’extension et visible sur https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html.

makeCodebook (dataMaid)

L’extension dataMaid propose une fonction makeCodebook permettant de générer une présentation de l’ensemble des variables d’un tableau de données, au format PDF, Word ou HTML.

Vous pouvez cliquez sur ce lien pour voir le PDF produit par dataMaid.