Chapitre 5 Charger, explorer et enregistrer des données
5.0.1 Répertoire de travail
Vous devez indiquer à R le répertoire où se trouvent les fichiers de
données afin de les charger. Vous pouvez voir quel répertoire R utilise
avec la fonction getwd()
”
getwd() # Cette commande vous indique le répertoire dans lequel vous vous trouvez.
Lorsque vous chargez un script, R définit le répertoire de travail comme étant le dossier qui contient le script.
Afin de spécifier le chemin d’accès du répertoire avec la fonction
setwd()
, utilisez le “/” pour séparer les dossiers, sous-dossiers et
noms de fichiers. Vous pouvez aussi cliquer sur session / Définir le
répertoire / Choisir le répertoire.
5.0.2 Afficher le contenu du répertoire de travail
La fonction dir()
affiche le contenu du répertoire de travail.
dir() # Cette commande vous indique le contenu du répertoire dans lequel vous vous trouvez.
Vous pouvez vérifier:
- Si le fichier que vous voulez ouvrir se trouve dans le répertoire de travail ou non
- L’orthographe du nom du fichier (e.g. ‘monfichier.csv’ au lieu de ‘MonFichier.csv’)
5.0.3 Importer un jeu de données
Utilisez la fonction read.csv()
pour importer des données provenant
d’un fichier .csv dans R.
<- read.csv("CO2_good.csv")
CO2 # Cette commande crée un objet nommé CO2 en chargeant les
# données du fichier nommé 'CO2_good.csv'.
Cette commande spécifie que vous créez un objet nommé “CO2” en lisant un fichier .csv nommé “CO2_good.csv”. Ce fichier doit se trouver dans votre répertoire de travail.
Il est aussi possible d’utiliser la fonction file.choose()
pour
charger un fichier de manière interactive.
<- read.csv(file.choose()) CO2
Rappelez-vous que le point d’interrogation peut être utilisé pour trouver de l’aide sur une fonction.
`?`(read.csv # Ceci fera apparaître la page d'aide pour la fonction read.csv().
)
La page d’aide permet de voir qu’il y a un argument header
qui
permet de spécifier si la première ligne du fichier contient le nom des
colonnes. Inscrire header=TRUE
indique à R que la première ligne du
tableau contient les noms des colonnes.
<- read.csv("CO2_good.csv", header = TRUE) CO2
NOTE : Si vous utilisez un système d’exploitation en français ou un
éditeur CSV, il est possible que vous deviez utiliser la fonction
read.csv2()
au lieu de la fonction read.csv()
pour importer
correctement un fichier.
Prenez note que RStudio montre maintenant le jeu de donné CO2 dans ton espace de travail. L’espace de travail inclut tous les objets créés pendant ta session R.
5.0.4 Explorer le jeu de données
Le jeu de données “CO2” contient des mesures répétées d’absorption de CO2 prises sur six plantes du Québec et six plantes du Mississippi à différentes concentrations de CO2 ambiant. La moitié des plantes de chaque région a subi un traitement de refroidissement la veille du début de l’expérience.
Voici quelques fonctions utiles pour visualiser le jeu de données importé :
CO2 | Affiche le tableau de données complet dans la console |
head(CO2) | Affiche les premières lignes du tableau de données |
names(CO2) | Affiche le nom des colonnes du tableau de données |
attributes(CO2) | Affiche les attributs du tableau de données |
ncol(CO2) | Affiche le nombre de colonnes du tableau de données |
nrow(CO2) | Affiche le nombre de lignes du tableau de données |
summary(CO2) | Calcule quelques statistiques de base sur les variables |
str(CO2) | Affiche la structure du tableau de données |
La fonction str()
est très utile pour identifier le type/mode de
chaque colonne (e.g. afin de vérifier que les facteurs sont
enregistrés comme facteurs et que les données numériques sont de type
numérique ou nombre entier). Plusieurs problèmes sont fréquents lors de
l’importation des données :
- Les facteurs apparaissent comme des chaînes de caractères (et vice versa)
- Les facteurs ont trop de niveaux à cause d’une erreur de frappe
- Les données numériques sont stockées sous forme de chaînes de caractères à cause d’une erreur de frappe (e.g. un espace de trop ou utiliser la virgule au lieu du point pour indiquer les décimales)
Exercice
Chargez les données de nouveau en utilisant le script suivant :
<- read.csv("CO2_good.csv", header = FALSE) CO2
Vérifiez la structure des données avec la fonction str()
. Quel est le
problème ? Chargez les données de nouveau, mais cette fois-ci avec
l’argument header=TRUE
avant de continuer.
5.0.5 Rappel de l’atelier 1 : Accéder aux données
Les données peuvent être extraites d’un jeu de données de plusieurs façons. Considerons un jeu de données nommé mydata. Les crochets permettent d’extraire le contenu d’une cellule.
2, 3] # extrait le contenu de la deuxième ligne / troisième colonne mydata[
Si le numéro de la colonne est omis, toute la ligne est extraite.
1, ] # extrait le contenu de la première ligne mydata[
Si le numéro de la ligne est omis, toute la colonne est extraite. De
même, le symbôle $
suivi d’un nom de colonne peut être utilisé.
1] # extrait le contenu de la première colonne
mydata[, 1][2] # [...] peut être utilisé récursivement
mydata[, $Variable1 # extrait le contenu de la colonne 'Variable1' mydata
5.0.6 Changer les noms de variables
On peut changer le nom de variables (colonnes) dans R.
# Créer une copie du jeu de données qu'on pourra modifier
<- CO2
CO2copy # names() donne les noms des variables présents dans le jeu
# de données
names(CO2copy)
# Changer des noms anglais à des noms français
names(CO2copy) <- c("Plante", "Categorie", "Traitement", "conc",
"absortion")
5.0.7 Créer des nouvelles variables
On peut facilement créer et produire des nouvelles variables. Par
exemple, la fonction paste()
permet la concaténation de chaînes de
caractères et de variables.
# Créer un ID unique pour les échantillons avec la fonction
# ''paste()'' Consultez ?paste et ?paste0 N'oubliez pas
# d'utiliser '' pour les chaînes de caractères
$uniqueID <- paste0(CO2copy$Plante, "_", CO2copy$Categorie,
CO2copy"_", CO2copy$Traitement)
# Observer les résultats
head(CO2copy$uniqueID)
On peut aussi créer des nouvelles variables à partir de chiffres et d’opérations mathématiques!
# Standardizer la variable 'absortion' en valeurs relatives
$absortionRel = CO2copy$absortion/max(CO2copy$absortion)
CO2copy
# Observer les résultats
head(CO2copy$absortionRel)
5.0.8 Extraire un sous-ensemble d’un jeu de données
Il y a plusieurs façons d’extraire un sous-ensemble d’un jeu de données.
# Continuons avec notre trame de données 'CO2copy'
## Extraire un sous-ensemble par un nom de variable
c("Plante", "absortionRel")] # Extrait seulement les colonnes nommées 'Plante' et 'absortionRel'. (N'oubliez pas ','!)
CO2copy[,
## Extraire un sous-ensemble de rangées
1:50, ] # Extraite les rangées de 1 à 50
CO2copy[
### Extraire un sous-ensemble correspondant à un facteur
$Traitement == "nonchilled", ] # Extraire les observations correspondant seulement au traitement 'nonchilled'.
CO2copy[CO2copy
### Extraire un sous-ensemble correspondant à une condition
### numérique
$absortion >= 20, ] # Extraire les observations ayant une absortion plus grande ou égale à 20
CO2copy[CO2copy
### Les conditions peuvent être complémentaires en
### utilisant '&'
$Traitement == "nonchilled" & CO2copy$absortion >=
CO2copy[CO2copy20, ]
# Nous avons fini de modifier la copie du jeu de données
# CO2copy. On peut alors l'effacer.
rm(CO2copy)
Consultez here pour voir les opérateurs logiques pouvant être utilisés pour extraire des sous-ensembles de données dans R.
5.0.9 Explorer les données
Pour faire une première exploration de données, on peut rapidement
calculer des statistiques de base avec la fonction summary()
.
summary(CO2) # calculer les statistiques sommaires du jeu de données
Plusieurs fonctions intégrées à R vous permettent d’obtenir de
l’information supplémentaire sur vos données. Les fonctions mean()
,
sd()
, hist()
, et print()
sont couramment utilisées.
# Calculer la moyenne et l'écart type des données dans la colonne "conc" de l'objet CO2
<-mean(CO2$conc) # Calcule la moyenne de la colonne "conc" de l'objet "CO2"
meanConc<-sd(CO2$conc) # Calcule l'écart-type de la colonne "conc"
sdConc
# print() sort une valeure dans la console R
print(paste("la concentration moyenne est:", meanConc)) print(paste("l'écart type de la concentration est:", sdConc))
# Produisez un histogramme to explore the distribution of "uptake"
hist(CO2$uptake)
# Augmenter le nombre de classes pour mieux observer la distribution
hist(CO2$uptake, breaks = 40)
La fonction apply()
est utilisée pour appliquer une fonction à
plusieurs colonnes en même temps. Utilisez ?apply
pour en apprendre
plus.
`?`(apply)
Pour utiliser la fonction apply()
, trois arguments doivent être
spécifiés. Le premier argument est le jeu de données sur lequel on veut
appliquer une fonction. Le deuxième argument spécifie si la fonction est
appliquée aux lignes (MARGIN = 1
) ou aux colonnes (MARGIN = 2
). Le
dernier argument spécifie la fonction à appliquer. Par exemple :
apply(CO2[, 4:5], MARGIN = 2, FUN = mean) # Calcule la moyenne des colonnes 4 et 5 du jeu de données CO2
5.0.10 Enregistrer son espace de travail
En enregistrant votre espace de travail, vous pouvez enregistrer les
scripts et les objets qui sont actuellement chargés dans R. Si vous
enregistrez votre espace de travail, vous pouvez chargez tous les objets
même si vous avez utilisé la commande rm(list=ls())
afin de nettoyer
tout ce qui se trouve dans l’espace de travail.
Utilisez la fonction save.image()
pour enregistrer l’espace de
travail :
save.image(file = "CO2_project_Data.RData") # L'espace de travail est enregistré
rm(list = ls()) # Nettoyer l'espace de travail
load("CO2_project_Data.RData") # Charger tout ce qui se trouvait dans l'espace de travail
head(CO2) # Ça fonctionne! :)
5.0.11 Exporter le jeu de données
Si vous voulez enregistrer des données que vous avez créées ou modifiées
dans R, utilisez la fonction write.csv()
. Le fichier ainsi créé sera
enregistré dans le répertoire de travail.
write.csv(CO2, file = "CO2_new.csv") # L'objet CO2 est enregistré dans le fichier nommé CO2_new.csv