library(learnr)
knitr::opts_chunk$set(echo = FALSE)
tutorial_options(exercise.startover = TRUE)
dir.create("data", showWarnings = FALSE)
file.copy("www/BIO1006_H2018_Echantillon_espace.dat", "data/")
## [1] FALSE
À la fin de cette capsule, vous serez en mesure de:
Veuillez noter qu’il est possible d’avoir plus d’une bonne réponse par question. Vous pouvez reprendre chaque exercice grâce aux boutons "Start Over" ou "Try Again" Le bouton "hint"" est là pour être utilisé!
Le jeux de données suivant (produit par le Pew Research Center) explore la relation entre le salaire et la religion aux États-Unis.
religion | below10k | from10to20k | from20to30k | from30to40k |
---|---|---|---|---|
Agnostic | 27 | 34 | 60 | 81 |
Atheist | 12 | 27 | 37 | 52 |
Buddhist | 27 | 21 | 30 | 34 |
Catholic | 418 | 617 | 732 | 670 |
Don't know/refused | 15 | 14 | 15 | 11 |
Evangelical Prot | 575 | 869 | 1064 | 982 |
En utilisant la fonction read.table()
, écrivez une ligne de code qui permet de lire correctement le fichier BIO1006_H2018_Echantillon_espace.dat
dont la structure ressemble à ceci.
Ne pas changer le nom du fichier, seulement remplacer ...
avec la bonne réponse.
couleur_yeux taille_cm nombre_choisi cours_par_session peur_des_biostats piece_monnaie genre
Noir 174 92 6 Non Face Fille
Bleu 168 20 5 Pas_sur Face Fille
Noisette 158 11 5 Pas_sur Face Fille
Autre 177 99 5 Non Face Gars
Noisette 152 87 5 Pas_sur Pile Fille
Bleu 177 7 5 Non Pile Gars
Bleu 163 25 5 Pas_sur Pile Fille
Noir 186 27 4 Non Pile Gars
Bleu 150 87 5 Non Face Gars
read.table(file = "/srv/shiny-server/capsules/capsule_4/data//BIO1006_H2018_Echantillon_espace.dat", ...)
Le data frame sondage_bio1006
qui présente le résultat d'un sondage effectué dans le cours de biostatistiques BIO-1006 du programme de baccalauréat en Biologie de l’Université Laval.
head
pour faire afficher les 4 premières lignes du data frame nommé sondage_bio1006
.
head()
Avant de voir comment importer des données dans R, il est bon de bien comprendre ce qu’est un bon jeu de données. Avoir un jeu de données bien organisé est nécessaire pour faire des analyses statistiques ou des graphiques. Il y a deux propriétés fondamentales qui caractérisent un bon jeu de données:
Imaginons que vous devez faire le recensement de certaines espèces animales à trois différentes stations (station1, station2 et station3). À chacune d’elles, il y a trois espèces différentes (espece1, espece2 et espece3). Notre réflexe est de créer un tableau de données comme suit, avec une colonne par espèce où chaque chiffre correspond au dénombrement noté. C'est ce qu’on appelle un tableau de données au format large (wide layout en anglais).
Le problème avec cette structure est qu'il y a trois colonnes pour représenter les espèces. Les colonnes espece1, espece2 et espece3 ne sont pas des variables, mais plutôt des valeurs d'une variable/colonne que l'on pourrait nommer tout simplement espece. Pour créer un jeu de données bien organisé, il faut retenir que chaque colonne représente une variable. C’est ce qu’on appelle le format long (long layout en anglais).
Info! N'oubliez pas qu'il faut éviter d'utiliser des caractères accentués dans les noms de variables. C'est pourquoi on nommera la colonne espece
et non espèce
.
La façon appropriée de représenter ces données consiste à créer seulement trois colonnes:
La plupart du temps, les données que vous aurez à importer dans R seront présentées dans de simples fichiers texte. Les extensions de ces fichiers les plus souvent rencontrées sont: .txt
, .dat
, .tab
et .csv
. (Note: il est plus simple d’entrer les données dans un tabulateur de type “Excel” ou Google sheets et de sauvegarder le fichier dans ces formats). La fonction R de base à utiliser pour ouvrir ces fichiers est read.table()
. Les principaux paramètres de cette fonction que vous devriez connaîtres par coeur sont (help(read.table)
):
file
: Chemin d'accès vers le fichier à ouvrir sur votre ordinateur.skip
: Nombre de lignes à passer/sauter au début de fichier avant de commencer à lire les données. En effet les premières lignes des fichiers de données sont souvent des commentaires sur le contexte, l’échantillonnage, etc. (métadonnées).header
: Est-ce que la première ligne de données du fichier contient les noms des colonnes? C’est le cas la grande majorité du temps!dec
: Caractère utilisé pour les valeurs décimales (“.” en Anglais ou “,” en Français).sep
: Caractère utilisé pour séparer les colonnes de variables.Note sur les chemins d'accès (file
): La structure du chemin d'accès à un fichier dépend de votre système d'exploitation. Les deux exemples suivants montrent quels pourraient être les chemins d'accès pour un fichier texte nommé nom_du_fichier.txt
se situant sur le bureau (Desktop) d'ordinateur Linux/Mac et Windows. Ici, nom_utilisateur
correspond à votre nom d'utilisateur sur votre système! De plus, notez que vous devriez toujours utiliser le signe /
plutôt que \
dans un chemin d'accès.
Linux/Mac
/home/nom_utilisateur/Desktop/nom_du_fichier.txt
Microsoft Windows
c:/Users/nom_utilisateur/Desktop/nom_du_fichier.txt
Info! La fonction read.table()
est une fonction générique qui peut lire la majorité des fichiers texte. Il existe cependant certaines variantes avec des valeurs de paramètres déjà spécifiées pour lire différents types de fichiers afin de nous faciliter la vie. Les deux fonctions les plus souvent utilisées sont:
read.csv()
: Pour lire les fichiers où le marqueur de décimale est un point "." et les colonnes sont séparées par une virgule "," (système générique anglais).read.csv2()
: Pour lire les fichiers où le marqueur de décimale est une virgule "," et les colonnes sont séparées par un point virgule ";". Cette fonction devrait être utilisée si votre système d'exploitation est configuré en Français.Pour nous familiariser avec ces différents paramètres 1, nous utiliserons un jeu de données contenant 7 variables (colonnes) et 60 observations (lignes). Ce jeu de données est le résultat d'un sondage effectué dans le cours de biostatistiques BIO-1006 du programme de baccalauréat en Biologie de l’Université Laval. Le jeu de données est dans un fichier nommé BIO1006_H2018_Echantillon.csv
.
couleur_yeux
: Couleur des yeux du répondant.taille_cm
: Taille en cm du répondant.nombre_choisi
: Nombre choisi par le répondant (entre 0 et 99).cours_par_session
: Nombre de cours suivis à la session du répondant.peur_des_biostats
: Réponse à la question "Est-ce que le répondant a peur des biostatistiques" (non, pas sur, oui).piece_monnaie
: Résultat du lancer d'une pièce de monnaie (pile, face).genre
: Genre du répondant (gars, fille, autre).Avant d'importer les données dans R, il est important d'ouvrir le fichier BIO1006_H2018_Echantillon.csv
pour explorer sa structure. Une fois ouvert dans votre éditeur de texte préféré, vous observerez les éléments suivants:
En connaissant ces éléments, il est possible de paramétrer la fonction read.table()
correctement pour importer les données. La commande suivante lit les données contenues dans le fichier pour les assigner 2 dans une variable nommée df
.
df <- read.table(file = "BIO1006_H2018_Echantillon.csv", header = TRUE, sep = ",", dec = ".")
La classe de l'objet df
qui a été créé est un data.frame
. Un data frame (ou structure de données) est simplement un tableau de données où chaque colonne peut avoir un type différent (numeric, character, date, etc.).
class(df)
## [1] "data.frame"
En regardant le contenu de df
, on constate que la classe de la variable couleur_yeux est factor
alors que celle de la variable taille_cm est numeric
(dbl
veut dire double pour double précision, du jargon informatique concernant les valeurs numériques).
Voici certaines fonctions très utiles pour travailler avec les data frame, illustrées ici en utilisant le jeu de données contenu dans la variable df
.
names(df) # Affiche les noms de colonnes (des variables)
## [1] "couleur_yeux" "taille_cm" "nombre_choisi"
## [4] "cours_par_session" "peur_des_biostats" "piece_monnaie"
## [7] "genre"
str(df) # Affiche la structure du data frame; une sorte de résumé des variables
## 'data.frame': 60 obs. of 7 variables:
## $ couleur_yeux : chr "Noir" "Bleu" "Noisette" "Autre" ...
## $ taille_cm : num 174 168 158 177 152 177 163 186 150 170 ...
## $ nombre_choisi : int 92 20 11 99 87 7 25 27 87 6 ...
## $ cours_par_session: int 6 5 5 5 5 5 5 4 5 5 ...
## $ peur_des_biostats: chr "Non" "Pas_sur" "Pas_sur" "Non" ...
## $ piece_monnaie : chr "Face" "Face" "Face" "Face" ...
## $ genre : chr "Fille" "Fille" "Fille" "Gars" ...
nrow(df) # Nombre de lignes (observations)
## [1] 60
ncol(df) # Nombre de colonnes (variables)
## [1] 7
head(df) # Affiche les 6 premières lignes (observations)
tail(df) # Affiche les 6 dernières lignes (observations)
Il est important de comprendre que chaque variable (colonne) d'un data frame est en fait un vecteur de données. Pour accéder à ces vecteurs, il suffit d’utiliser le signe de dollar $ avec le nom du data frame et de la variable. Dans l'exemple suivant, on extrait la variable (vecteur) taille_cm
du data frame df
.
df$taille_cm
## [1] 174.00 168.00 158.00 177.00 152.00 177.00 163.00 186.00 150.00 170.00
## [11] 165.00 180.00 153.00 177.00 1.53 156.00 152.00 165.00 168.00 158.00
## [21] 173.00 177.00 164.00 165.54 170.00 155.00 195.00 174.00 183.00 164.00
## [31] 153.00 173.00 161.00 170.00 164.00 152.00 170.00 170.00 159.00 182.00
## [41] 161.00 186.00 168.00 175.00 162.00 164.00 195.68 155.00 182.00 180.00
## [51] 166.00 173.00 177.00 161.00 180.00 177.00 160.00 165.00 165.00 157.00
Info! Dans RStudio, une fois que vous avez tapé le nom du data frame et le signe dollar (df$
), vous pouvez appuyer sur la touche tabulation (TAB; -> |) de votre clavier pour afficher la liste complète des variables contenues dans le data frame.
Puisque chaque colonne est un vecteur, on peut utiliser plusieurs fonctions que vous devriez déjà connaître3.
class(df$taille_cm) # Quelle est la classe du vecteur
## [1] "numeric"
length(df$taille_cm) # Quelle est la longueur du vecteur
## [1] 60
mean(df$taille_cm) # Quelle est la moyenne du vecteur
## [1] 165.5792
Il est facile de créer de nouvelles variables dans un data frame en utilisant l'opérateur $
. Dans l'exemple suivant, une nouvelle variable taille_in
représentant la taille en pouces (inches en anglais) est créée:
# Conversion des centimètres en pouces
df$taille_po = df$taille_cm * 0.393701
# Afficher les noms de variables dans df (notez la nouvelle colonne)
names(df)
## [1] "couleur_yeux" "taille_cm" "nombre_choisi"
## [4] "cours_par_session" "peur_des_biostats" "piece_monnaie"
## [7] "genre" "taille_po"
# Afficher le data frame avec la nouvelle variable (cliquez sur les flèches pour
# naviguer dans les colonnes).
df
Il est possible d'exporter un data frame depuis R vers un fichier texte sur votre ordinateur en utilisant la fonction write.table()
. Les paramètres sont les mêmes que ceux de read.table()
à l'exception de x
qui correspond au data frame que l'on veut exporter. Dans l'exemple suivant, le data frame df
est exporté dans un fichier nommé sondage_cours_biostats.csv
.
write.table(x = df, file = "/home/user/Desktop/sondage_cours_biostats.csv", sep = ",", dec = ".")
Le matériel pédagogique utilisé dans cette capsule est disponible pour le téléchargement sous deux formats différents:
Pour télécharger le fichier localement sur votre ordinateur, tablette ou téléphone portable, il suffit de cliquer sur le lien désiré avec le bouton droit de votre souris et choisir “sauvegarder sous…”.
Voir la capsule Les fonctions de R pour une explication plus complète de ce que sont les paramètres.↩
Voir la capsule Les variables dans R pour bien comprendre ce que signifie une assignation de valeur à une variable ainsi qu’une classe de variable.↩
Voir la capsule Les fonctions dans R pour une courte liste des fonctions essentielles. Voir aussi la notice à télécharger.↩