<- read.table("data/data.csv", sep=";", header=TRUE)
x x
prénom sexe stature R
1 Hildegarde femme 168 TRUE
2 Jean-Jacques homme 170 FALSE
3 Victor autre 184 FALSE
Dans une vaste majorité des cas, vous remplissez et gérez vos données à partir d’un tableur. Que vous utilisiez MS Excel, Open Office, Libre Office, Google Sheets ou même un bloc notes, je ne saurai trop vous conseiller de respecter les quelques règles ci-dessous qui vous faciliteront la vie ensuite.
Soignez vos données sources
Je liste ci-dessous les grands principes, issus de l’excellent article par Karl Broman et Kara Woo1. Je les amende à la marge mais allez de ce pas lire cet article !
1. Bien nommer votre fichier
data_2024-04-23
est une excellente base. Un horodatage est utile si d’autres versions venaient à advenir, vous n’auriez que le nom du fichier source à changer côté R.2. Bien nommer vos colonnes
_
à la place. Par exemple : arm_length
, arm_width
, leg_length
, etc.geo_city
, geo_country
, geo_lat
, geo_lon
. Cela vous permettra de les sélectionner facilement avec dplyr
et tidyselect
.3. Soyez homogènes partout, tout le temps
{F, M, NA}
. Chaque mésange aura une (et une seule) valeur.182.1
(cm); 174.2
(cm); etc..
comme séparateur décimal4. Une seule valeur par cellule
NA
.5. Exporter en fichier texte
.txt
ou .csv
(qui est fondamentalement du texte) ou n’importe quel autre fichier pouvant s’ouvrir avec un simple bloc-notes.xlsx
(et variantes) est possible mais non souhaitable.Cette section utilise le petit jeu de données “data.csv” que vous pouvez télécharger ici.
N’hésitez pas à créer votre propre jeu de données ou bien à en utiliser un que vous auriez sous la main.
Je commence par les fonctions de base de R mais sachez que RStudio fait très bien le job, alors ne restez pas trop bloqués sur la section read.table
, surtout là pour la démystifier.
read.table
La fonction “historique” pour l’import de données est read.table
qui a provoqué des tonneaux de larmes et qui, pour une entrée en matière est, il est vrai, un peu aride. Et pourtant, il n’y a que quelques arguments à préciser si votre fichier tableur, devenu texte, suit les conseils de la section précédente.
Le principal point d’achoppement est peut-être le premier argument (file
) qui définit le chemin vers votre fichier. Un chemin peut être spécifié de façon relative ou absolue :
C:\
ou ~
selon que vous soyiez respectivement sur Windows ou sur un OS plus décent)getwd()
et modifiable par setwd()
.Si par exemple, j’ai récupéré mon fichier data.csv
(voir plus haut) et qu’il gît sur mon Bureau (j’ai un Mac) le chemin absolu serait : "~/Desktop/data0.csv"
; Alors que mon chemin relatif serait relatif à : /Users/vbonhomme/Research/R-pour-ma-grand-mere
.
Mon conseil est le suivant : utilisez les “Projets” RStudio. L’icône bleue en haut à droite ou “File > New project”. Puis, dans ce dossier qui contiendra vos scripts, vos données, vos résultats, votre papier, etc. créez un dossier “data”. De cette façon, votre working directory sera votre dossier général et ils vous suffira d’utiliser ce type de chemin : data/data.csv
.
read.table
accepte ensuite d’autres arguments, les plus souvent utilisés étant :
sep
pour définir le caractère qui définit le saut de champ (de colonne). Si vous utilisez des tabulations, ce que je ne conseille pas, vous pouvez le mentionner avec \t
;dec
: idem pour le marqueur de la décimale (idéalement .
, la valeur par défaut, ou ,
que je vous déconseille)header
: TRUE
/FALSE
selon que vos colonnes aient des entêtes ou non ;skip
: pour sauter, éventuellement, des lignes en début de fichier.Avec data.csv
on peut donc importer son contenu via :
<- read.table("data/data.csv", sep=";", header=TRUE)
x x
prénom sexe stature R
1 Hildegarde femme 168 TRUE
2 Jean-Jacques homme 170 FALSE
3 Victor autre 184 FALSE
RStudio
La commande “Environment > Import dataset” de RStudio vous simplifie grandement cette tâche avec un aperçu en temps réel de l’import via le package readr
. Une fois que vous êtes satisfait·e, vous pouvez copier-coller le code qui vous sera retourné à l’issu de l’import. Royal !
readr
Le package readr
du tidyverse fait la même chose mais vous donne plus de contrôle sur l’import. Le package est bien documenté ici.
Vous pourriez aussi avoir besoin d’écrire des fichiers .csv
, .txt
, etc. Sachez qu’à côté de read.table
, read_csv
, etc. existent leur cousines destinées à l’écriture : write.table
, write_csv
qui fonctionnent de la même façon.
Pour avoir un fichier qui s’ouvre “facilement” dans un tableur je vous conseille :
write.table(votre_objet, row.names=FALSE, col.names=TRUE)
.rda
Si vous voulez sauver/lire des fichiers R, dans le format natif de R, les commandes save
/load
sont vos amies. Le format rda
(ou .RData
, c’est la même chose) est compressé et optimisé. Vous pouvez ainsi sauver un jeu de données comme cela :
save(iris, file="iris.rda")
load("iris.rda")
Cette approche est par exemple très utile dans le cas d’un calcul qui serait très long dans un script (qui se terminerait par un save
) et serait rappelé à la vie par un autre script (qui commencerait par un load
).
Pour vous ouvrir les shakras, sachez qu’il existe quantité d’autres approches pour importer/exporter des données.
readlines
lit des fichiers textes brutsfeather
utilise un format performant et interopérable de données avec Pythonxlsx
permet de lire/écrire des fichiers xlsx
(berk)httr
permet de travailler avec l’http et notamment de faire des requêtes GET
et POST
yaml
permet de parser des fichiers .yaml
https://doi.org/10.1080/00031305.2017.1375989↩︎
❤ Placé dans le domaine public par Vincent Bonhomme