Chapitre 3 Premier travail avec des données
Certaines parties de ce chapitre sont extraites du cours de Julien Barnier “Introduction à R et au tidyverse” (https://juba.github.io/tidyverse)
3.1 Jeu de données d’exemple
Dans cette partie nous allons (enfin) travailler sur des “vraies” données, et utiliser un jeu de données présent dans l’extension questionr
. Nous devons donc avant toute chose installer cette extension.
Pour installer ce package, deux possibilités :
- Dans l’onglet Packages de la zone de l’écran en bas à droite, cliquez sur le bouton Install. Dans le dialogue qui s’ouvre, entrez “questionr” dans le champ Packages puis cliquez sur Install.
- Saisissez directement la commande suivante dans la console :
install.packages("questionr")
Dans les deux cas, tout un tas de messages devraient s’afficher dans la console. Attendez que l’invite de commandes >
apparaisse à nouveau.
Le jeu de données que nous allons utiliser est un extrait de l’enquête Histoire de vie réalisée par l’INSEE en 2003. Il contient 2000 individus et 20 variables.
Pour pouvoir utiliser ces données, il faut d’abord charger l’extension questionr
(après l’avoir installée, bien entendu) :
L’utilisation de library
permet de rendre “disponibles”, dans notre session R, les fonctions et jeux de données inclus dans l’extension.
Nous devons ensuite indiquer à R que nous souhaitons accéder au jeu de données à l’aide de la commande data
:
Cette commande ne renvoie aucun résultat particulier (sauf en cas d’erreur), mais vous devriez voir apparaître dans l’onglet Environment de RStudio un nouvel objet nommé hdv2003
:
Cet objet est d’un type nouveau : il s’agit d’un tableau de données.
3.2 Tableau de données (data frame)
Un data frame (ou tableau de données, ou table) est un type d’objet R qui contient des données au format tabulaire, avec les observations en ligne et les variables en colonnes, comme dans une feuille de tableur de type LibreOffice ou Excel.
Si on se contente d’exécuter le nom de notre tableau de données :
R va, comme à son habitude, nous l’afficher dans la console, ce qui est tout sauf utile.
Une autre manière d’afficher le contenu du tableau est de cliquer sur l’icône en forme de tableau à droite du nom de l’objet dans l’onglet Environment :
Ou d’utiliser la fonction View
:
Dans les deux cas votre tableau devrait s’afficher dans RStudio avec une interface de type tableur :
Il est important de comprendre que l’objet hdv2003
contient l’intégralité des données du tableau.
On voit donc qu’un objet peut contenir des données de types très différents (simple nombre, texte, vecteur, tableau de données entier), et être potentiellement de très grande taille4.
Sous R, on peut importer ou créer autant de tableaux de données qu’on le souhaite, dans les limites des capacités de sa machine.
Un data frame peut être manipulé comme les autres objets vus précédemment. On peut par exemple faire :
ce qui va entraîner la copie de l’ensemble de nos données dans un nouvel objet nommé d
. Ceci peut paraître parfaitement inutile mais a en fait l’avantage de fournir un objet avec un nom beaucoup plus court, ce qui diminuera la quantité de texte à saisir par la suite.
Pour résumer, comme nous avons désormais décidé de saisir nos commandes dans un script et non plus directement dans la console, les premières lignes de notre fichier de travail sur les données de l’enquête Histoire de vie pourraient donc ressembler à ceci :
## Chargement des extensions nécessaires
library(questionr)
## Jeu de données hdv2003
data(hdv2003)
d <- hdv2003
3.2.1 Structure du tableau
Un tableau étant un objet comme un autre, on peut lui appliquer des fonctions. Par exemple, nrow
et ncol
retournent le nombre de lignes et de colonnes du tableau :
## [1] 2000
## [1] 20
La fonction dim
renvoie ses dimensions, donc les deux nombres précédents :
## [1] 2000 20
La fonction names
retourne les noms des colonnes du tableau, c’est-à-dire la liste de nos variables :
## [1] "id" "age" "sexe" "nivetud"
## [5] "poids" "occup" "qualif" "freres.soeurs"
## [9] "clso" "relig" "trav.imp" "trav.satisf"
## [13] "hard.rock" "lecture.bd" "peche.chasse" "cuisine"
## [17] "bricol" "cinema" "sport" "heures.tv"
On peut aussi utiliser la fonction colnames
:
## [1] "id" "age" "sexe" "nivetud"
## [5] "poids" "occup" "qualif" "freres.soeurs"
## [9] "clso" "relig" "trav.imp" "trav.satisf"
## [13] "hard.rock" "lecture.bd" "peche.chasse" "cuisine"
## [17] "bricol" "cinema" "sport" "heures.tv"
Enfin, la fonction str
renvoie un descriptif plus détaillé de la structure du tableau. Elle liste les différentes variables, indique leur type 5 et affiche les premières valeurs :
## '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 ...
Sous RStudio, on peut afficher à tout moment la structure d’un objet en cliquant sur l’icône de triangle sur fond bleu à gauche du nom de l’objet dans l’onglet Environment :
3.2.2 Accéder aux variables d’un tableau
Une opération très importante est l’accès aux variables du tableau (à ses colonnes) pour pouvoir les manipuler, effectuer des calculs, etc. On utilise pour cela l’opérateur $
, qui permet d’accéder aux colonnes du tableau. Ainsi, si l’on tape :
## [1] Femme Femme Homme Homme Femme Femme Femme Homme Femme Homme Femme
## [12] Homme Femme Femme Femme Femme Homme Femme Homme Femme Femme Homme
## [23] Femme Femme Femme Homme Femme Homme Homme Homme Homme Homme Homme
## [34] Homme Femme Femme Homme Femme Femme Homme Femme Homme Homme Femme
## [45] Femme Homme Femme Femme Femme Femme Homme Femme Homme Femme Homme
## [56] Femme Femme Femme Homme Femme Femme Homme Homme Homme Homme Femme
## [67] Homme Homme Femme Femme Homme Homme Femme Femme Femme Femme Homme
## [78] Femme Femme Femme Femme Femme Femme Homme Homme Femme Homme Homme
## [89] Homme Homme Homme Femme Homme Femme Femme Femme Homme Homme Femme
## [100] Femme Femme Homme Femme Homme Homme Femme Femme Femme Femme Homme
## [111] Homme Homme Homme Homme Femme Homme Homme Femme Homme Homme Femme
## [122] Femme Femme Homme Femme Femme Homme Femme Femme Homme Femme Homme
## [133] Femme Femme Femme Homme Homme Homme Homme Homme Homme Homme Homme
## [144] Femme Homme Homme Homme Femme Femme Femme Homme Femme Femme Femme
## [155] Femme Homme Femme Homme Homme Homme Femme Homme Femme Homme Femme
## [166] Homme Homme Femme Femme Femme Homme Femme Homme Femme Femme Femme
## [177] Homme Homme Homme Femme Homme Femme Femme Homme Homme Femme Femme
## [188] Femme Femme Femme Homme Homme Femme Homme Homme Femme Homme Femme
## [199] Homme Femme
## [ reached getOption("max.print") -- omitted 1800 entries ]
## Levels: Homme Femme
R va nous afficher l’ensemble des valeurs de notre variable sexe
dans la console, ce qui est à nouveau fort peu utile. Mais cela nous permet de constater que d$sexe
est un vecteur de chaînes de caractères tels qu’on en a déjà rencontré précédemment. Pour le moment, on ne fait pas attention à Levels: Homme Femme
La fonction table$colonne
renvoie donc la colonne nommée colonne
du tableau table
, c’est-à-dire un vecteur, en général de nombres ou de chaînes de caractères.
Si on souhaite afficher seulement les premières ou dernières valeurs d’une variable, on peut utiliser les fonctions head
et tail
:
## [1] 28 23 59 34 71 35
## [1] 52 42 50 41 46 45 46 24 24 66
Le deuxième argument numérique permet d’indiquer le nombre de valeurs à afficher.
3.2.3 Créer une nouvelle variable
On peut aussi utiliser l’opérateur $
pour créer une nouvelle variable dans notre tableau : pour cela, il suffit de lui assigner une valeur.
Par exemple, la variable heures.tv
contient le nombre d’heures passées quotidiennement devant la télé :
## [1] 0.0 1.0 0.0 2.0 3.0 2.0 2.9 1.0 2.0 2.0
On peut vouloir créer une nouvelle variable dans notre tableau qui contienne la même durée mais en minutes. On va donc créer une nouvelle variable minutes.tv
de la manière suivante :
On peut alors constater, soit visuellement soit dans la console, qu’une nouvelle variable (une nouvelle colonne) a bien été ajoutée au tableau :
## [1] 0 60 0 120 180 120
On peut également supprimer une colonne d’un data frame en utilisant <- NULL
## [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [24] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [47] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [70] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [93] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [116] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [139] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [162] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [185] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [ reached getOption("max.print") -- omitted 1800 entries ]
## [1] 22
## [1] 21
3.3 Analyse univariée
On a donc désormais accès à un tableau de données d
, dont les lignes sont des observations (des individus enquêtés), et les colonnes des variables (des caractéristiques de chacun de ces individus), et on sait accéder à ces variables grâce à l’opérateur $
.
Si on souhaite analyser ces variables, les méthodes et fonctions utilisées seront différentes selon qu’il s’agit d’une variable quantitative (variable numérique pouvant prendre un grand nombre de valeurs : l’âge, le revenu, un pourcentage…) ou d’une variable qualitative (variable pouvant prendre un nombre limité de valeurs appelées modalités : le sexe, la profession, le dernier diplôme obtenu, etc.).
3.3.1 Analyser une variable quantitative
Une variable quantitative est une variable de type numérique (un nombre) qui peut prendre un grand nombre de valeurs. On en a plusieurs dans notre jeu de données, notamment l’âge (variable age
) ou le nombre d’heures passées devant la télé (heures.tv
).
3.3.1.1 Indicateurs de position
Caractériser une variable quantitative, c’est essayer de décrire la manière dont ses valeurs se répartissent, ou se distribuent.
Pour cela on peut commencer par regarder les valeurs extrêmes, avec les fonctions min
, max
ou range
:
## [1] 18
## [1] 97
## [1] 18 97
On peut aussi calculer des indicateurs de position : ceux-ci indiquent autour de quel nombre se répartissent les valeurs de la variable. Il y en a plusieurs, le plus connu étant la moyenne, qu’on peut calculer avec la fonction mean
:
## [1] 48.157
Il existe aussi la médiane, qui est la valeur qui sépare notre population en deux : on a la moitié de nos observations en-dessous, et la moitié au-dessus. Elle se calcule avec la fonction median
:
## [1] 48
Une différence entre les deux indicateurs est que la médiane est beaucoup moins sensible aux valeurs “extrêmes” : on dit qu’elle est plus robuste. Ainsi, en 2013, le salaire net moyen des salariés à temps plein en France était de 2202 euros, tandis que le salaire net médian n’était que de 1772 euros. La différence étant due à des très hauts salaires qui “tirent” la moyenne vers le haut.
3.3.1.2 Indicateurs de dispersion
Les indicateurs de dispersion permettent de mesurer si les valeurs sont plutôt regroupées ou au contraire plutôt dispersées.
L’indicateur le plus simple est l’étendue de la distribution, qui décrit l’écart maximal observé entre les observations :
## [1] 79
Les indicateurs de dispersion les plus utilisés sont la variance ou, de manière équivalente, l’écart-type (qui est égal à la racine carrée de la variance). On obtient la première avec la fonction var
, et le second avec sd
(abréviation de standard deviation) :
## [1] 287.0249
## [1] 16.94181
Plus la variance ou l’écart-type sont élevés, plus les valeurs sont dispersées autour de la moyenne. À l’inverse, plus ils sont faibles et plus les valeurs sont regroupées.
Une autre manière de mesurer la dispersion est de calculer les quartiles :
- le premier quartile est la valeur pour laquelle on a 25% des observations en dessous et 75% au-dessus
- le deuxième quartile est la valeur pour laquelle on a 50% des observations en dessous et 50% au-dessus (c’est donc la médiane)
- le troisième quartile est la valeur pour laquelle on a 75% des observations en dessous et 25% au-dessus
On peut les calculer avec la fonction quantile
:
## 25%
## 35
## 75%
## 60
L’argument quantile
prend deux arguments principaux : le vecteur dont on veut calculer le quantile, et un argument prob
qui indique quel quantile on souhaite obtenir. prob
prend une valeur entre 0 et 1 : 0.5 est la médiane, 0.25 le premier quartile, 0.1 le premier décile, etc.
Par défaut, la fonction quantile affiche le min, max et les quartiles de la série :
## 0% 25% 50% 75% 100%
## 18 35 48 60 97
Attention !
L’ensemble les fonctions statistiques sont sensibles à la présence de valeurs manquantes NA
. On utilisera l’argument na.rm = TRUE
pour éviter les erreurs.
Notons enfin que la fonction summary
permet d’obtenir d’un coup plusieurs indicateurs classiques :
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 35.00 48.00 48.16 60.00 97.00
3.3.1.3 Représentation graphique
L’outil le plus utile pour étudier la distribution des valeurs d’une variable quantitative reste la représentation graphique.
La représentation la plus courante est sans doute l’histogramme. On peut l’obtenir avec la fonction hist
:
Cette fonction n’a pas pour effet direct d’effectuer un calcul ou de nous renvoyer un résultat : elle génère un graphique qui va s’afficher dans l’onglet Plots de RStudio.
On peut personnaliser l’apparence de l’histogramme en ajoutant des arguments supplémentaires à la fonction hist
. L’argument le plus important est breaks
, qui permet d’indiquer le nombre de classes que l’on souhaite.
Le choix d’un “bon” nombre de classes pour un histogramme n’est pas un problème simple : si on a trop peu de classes, on risque d’effacer quasiment toutes les variations, et si on en a trop on risque d’avoir trop de détails et de masquer les grandes tendances.
Les arguments de hist
permettent également de modifier la présentation du graphique. On peut ainsi changer la couleur des barres avec col
6, le titre avec main
, les étiquettes des axes avec xlab
et ylab
, etc. :
hist(x = d$age, col = "skyblue",
main = "Répartition des ages des enquêtés",
xlab = "age",
ylab = "Effectif")
La fonction hist
fait partie des fonctions graphique de base de R. Elle est souvent associée au graphique boîtes à moustaches (boxplot) qui permet de résumer la distribution d’une variable quantitative à travers les quartiles notamment.
3.3.2 Analyser une variable qualitative
Une variable qualitative est une variable qui ne peut prendre qu’un nombre limité de valeurs, appelées modalités. Dans notre jeu de données on trouvera par exemple le sexe (sexe
), le niveau d’études (nivetud
), la catégorie socio-professionnelle (qualif
)…
À noter qu’une variable qualitative peut tout-à-fait être numérique, et que certaines variables peuvent être traitées soit comme quantitatives, soit comme qualitatives : c’est le cas par exemple du nombre d’enfants ou du nombre de frères et soeurs.
3.3.2.1 Tri à plat
L’outil le plus utilisé pour représenter la répartition des valeurs d’une variable qualitative est le tri à plat : il s’agit simplement de compter, pour chacune des valeurs possibles de la variable (pour chacune des modalités), le nombre d’observations ayant cette valeur. Un tri à plat s’obtient sous R à l’aide de la fonction table
:
## x
## Homme Femme
## 899 1101
Ce tableau nous indique donc que parmi nos enquêtés on trouve 899 hommes et 1101 femmes.
## x
## Ouvrier specialise Ouvrier qualifie Technicien
## 203 292 86
## Profession intermediaire Cadre Employe
## 160 260 594
## Autre
## 58
Un tableau de ce type peut être affiché ou stocké dans un objet, et on peut à son tour lui appliquer des fonctions. Par exemple, la fonction sort
permet de trier le tri à plat selon la valeur de l’effectif. On peut donc faire :
## x
## Autre Technicien Profession intermediaire
## 58 86 160
## Ouvrier specialise Cadre Ouvrier qualifie
## 203 260 292
## Employe
## 594
Attention, par défaut la fonction table
n’affiche pas les valeurs manquantes (NA
). Si on souhaite les inclure il faut utiliser l’argument useNA = "always"
, soit : table(d$qualif, useNA = "always")
. À noter qu’on peut aussi appliquer summary
à une variable qualitative. Le résultat est également le tri à plat de la variable, avec en plus le nombre de valeurs manquantes éventuelles :
## Ouvrier specialise Ouvrier qualifie Technicien
## 203 292 86
## Profession intermediaire Cadre Employe
## 160 260 594
## Autre NA's
## 58 347
Par défaut ces tris à plat sont en effectifs et ne sont donc pas toujours très lisibles, notamment quand on a des effectifs importants. On leur rajoute donc en général la répartition en pourcentages. Pour cela, nous allons utiliser la fonction freq
de l’extension questionr
, qui devra donc avoir précédemment été chargée avec library(questionr)
:
On peut alors utiliser la fonction :
## n % val%
## Ouvrier specialise 203 10.2 12.3
## Ouvrier qualifie 292 14.6 17.7
## Technicien 86 4.3 5.2
## Profession intermediaire 160 8.0 9.7
## Cadre 260 13.0 15.7
## Employe 594 29.7 35.9
## Autre 58 2.9 3.5
## NA 347 17.3 NA
La colonne n
représente les effectifs de chaque catégorie, la colonne %
le pourcentage, et la colonne val%
le pourcentage calculé sur les valeurs valides, donc en excluant les NA
. Une ligne a également été rajoutée pour indiquer le nombre et la proportion de NA
.
freq
accepte un certain nombre d’arguments pour personnaliser son affichage. Par exemple :
valid
indique si on souhaite ou non afficher les pourcentages sur les valeurs validescum
indique si on souhaite ou non afficher les pourcentages cumuléstotal
permet d’ajouter une ligne avec les effectifs totauxsort
permet de trier le tableau par fréquence croissante (sort="inc"
) ou décroissante (sort="dec"
).
## n %
## Employe 594 29.7
## Ouvrier qualifie 292 14.6
## Cadre 260 13.0
## Ouvrier specialise 203 10.2
## Profession intermediaire 160 8.0
## Technicien 86 4.3
## Autre 58 2.9
## NA 347 17.3
## Total 2000 100.0
3.3.2.2 Représentations graphiques
On peut représenter graphiquement le tri à plat d’une variable qualitative avec un diagramme en barres, obtenu avec la fonction barplot
. Attention, contrairement à hist
cette fonction ne s’applique pas directement à la variable mais au résultat du tri à plat de cette variable, calculé avec table
. Il faut donc procéder en deux étapes :
tab <- table( x = d$qualif )
barplot(height = tab, main = 'Répartition par qualification', las= 2, cex.names = 0.4)
L’argument las
permet de pivoter les étiquettes et cex.names
la taille de la police.
On peut aussi trier le tri à plat avec la fonction sort
avant de le représenter graphiquement, ce qui peut faciliter la lecture du graphique :
La fonction pie
permet de construire un diagramme circulaire. Il fonctionne de la même manière que la fonction barplot
.
3.4 Combiner plusieurs variables
3.4.1 Créer une nouvelle variable
On peut aussi utiliser l’opérateur $
pour créer une nouvelle variable dans un data frame : pour cela, il suffit de lui assigner une valeur.
Par exemple dans le jeu de données hdv2003
, la variable heures.tv
contient le nombre d’heures passées quotidiennement devant la télé. On peut vouloir créer une nouvelle variable dans notre tableau qui contienne la même durée mais en minutes. On va donc créer une nouvelle variable minutes.tv
de la manière suivante :
3.4.2 Créer des regroupements de modalités
Parfois, on veut créer une nouvelle variable en partant des valeurs d’une ou plusieurs autres variables. La fonction ifelse
permet de construire des regroupements simples. Elle se construit comme la fonction si
d’excel.
Toujours dans le jeu de données hdv2003
, on souhaite créer une variable actif / inactif basée sur la variable occup
telle que :
occup | Regroupement |
---|---|
Exerce une profession | actif |
Etudiant, eleve | inactif |
Chomeur | inactif |
Retraite | inactif |
Retire des affaires | inactif |
Au foyer | inactif |
Autre inactif | inactif |
d$occupGroup <- ifelse(test = (d$occup == "Exerce une profession"),
yes = "actif",
no = "inactif")
table(d$occupGroup)
##
## actif inactif
## 1049 951
Cependant, la population active regroupe la population active occupée (appelée aussi « population active ayant un emploi ») et les chômeurs.
On opère donc un nouveau regroupement en plaçant cette fois-ci les chômeurs avec les actifs :
d$occupGroup <- ifelse(test = (d$occup == "Exerce une profession" | d$occup == "Chomeur"),
yes = "actif",
no = "inactif")
table(d$occupGroup)
##
## actif inactif
## 1183 817
Lorsqu’on travaille sur la même variable et pour éviter l’utilisation de “OU” répétés, on utilise le mot clé %in%
.
d$occupGroup <- ifelse(test = (d$occup %in% c("Exerce une profession","Chomeur")),
yes = "actif",
no = "inactif")
table(d$occupGroup)
##
## actif inactif
## 1183 817
3.4.3 Découper une variable numérique en classes
Une autre opération relativement courante consiste à découper une variable numérique en classes. Par exemple, on voudra transformer la variable âge avec des catégories : Moins de 30 euros, 30-50 ans, plus de 50 ans, etc.
Pour cela, on utilise la fonction cut
.
Si on donne un nombre entier à l’argument breaks, un nombre correspondant de classes d’amplitudes égales sont automatiquement calculées. Il est souvent préférable cependant d’avoir des limites “rondes”, on peut alors spécifier ces dernières manuellement en passant un vecteur à breaks :
d$ageGroup <- cut(x = d$age, breaks = c(min(d$age),30,50,max(d$age)) ,
include.lowest = TRUE)
table(d$ageGroup)
##
## [18,30] (30,50] (50,97]
## 351 780 869
Ici on a été obligé d’ajouter l’argument include.lowest = TRUE
car sinon la valeur 18 n’aurait pas été incluse, et on aurait eu des valeurs manquantes.
3.5 Exercices
3.5.1 Sujet
Exercice 1
Créer un nouveau script qui effectue les actions suivantes :
- charger l’extension
questionr
- charger le jeu de données nommé
hdv2003
- copier le jeu de données dans un nouvel objet nommé
df
- afficher les dimensions et la liste des variables de
df
Exercice 2
On souhaite étudier la répartition du temps passé devant la télévision par les enquêtés (variable heures.tv
). Pour cela, affichez les principaux indicateurs de cette variable : valeur minimale, maximale, moyenne, médiane et écart-type. Représentez ensuite sa distribution par un histogramme en 10 classes.
Exercice 3
On s’intéresse maintenant à l’importance accordée par les enquêtés à leur travail (variable
trav.imp
). Faites un tri à plat des effectifs des modalités de cette variable avec la commandetable
.Faites un tri à plat affichant à la fois les effectifs et les pourcentages de chaque modalité. Y’a-t-il des valeurs manquantes ?
Représentez graphiquement les effectifs des modalités à l’aide d’un graphique en barres.
Utilisez l’argument
col
de la fonctionbarplot
pour modifier la couleur du graphique entomato
.
3.5.2 Correction
Exercice 1
Créer un nouveau script qui effectue les actions suivantes :
- charger l’extension
questionr
- charger le jeu de données nommé
hdv2003
- copier le jeu de données dans un nouvel objet nommé
df
- afficher les dimensions et la liste des variables de
df
Exercice 2
On souhaite étudier la répartition du temps passé devant la télévision par les enquêtés (variable heures.tv
). Pour cela, affichez les principaux indicateurs de cette variable : valeur minimale, maximale, moyenne, médiane et écart-type. Représentez ensuite sa distribution par un histogramme en 10 classes.
Exercice 3
- On s’intéresse maintenant à l’importance accordée par les enquêtés à leur travail (variable
trav.imp
). Faites un tri à plat des effectifs des modalités de cette variable avec la commandetable
.
- Faites un tri à plat affichant à la fois les effectifs et les pourcentages de chaque modalité. Y’a-t-il des valeurs manquantes ?
- Représentez graphiquement les effectifs des modalités à l’aide d’un graphique en barres.
- Utilisez l’argument
col
de la fonctionbarplot
pour modifier la couleur du graphique entomato
.
Tapez colors()
dans la console pour afficher l’ensemble des noms de couleurs disponibles dans R.
3.6 Testez vos connaissances !
Testez vos connaissances sur ce chapitre avec ce quiz (10 min) en cliquant ici.
La seule limite pour la taille d’un objet étant la mémoire vive (RAM) de la machine sur laquelle tourne la session R.↩︎
Les différents types de variables seront décrits plus en détail dans un autre TD sur les recodages.↩︎
Les différentes manières de spécifier des couleurs seront abordées plus tard.↩︎