Tutoriel : Comment importer plusieurs jeux de données de façon automatisée, avec le logiciel R

imortation automatisée de pluliseurs fichiers dans R

Il y a quelques années, j’ai fait une prestation qui consistait à analyser des données de températures mesurées le long d’une rivière. Cette analyse nécessitait d’importer plusieurs jeux de données dans R, une bonne vingtaine ! Il y avait des fichiers pour chaque lieu de prélèvement, pour chaque année étudiée, et des fichiers de débits, de précipitations ou encore de températures atmosphériques.

Comme c’était la première fois que j’étais confrontée à cette situation de devoir importer plusieurs jeux de données, j’ai commencé à les importer “manuellement”, un par un.

Et puis le client s’est rendu compte que certains fichiers contenaient des erreurs. Il les a donc corrigé, ou fait corriger, et pendant cette phase de validation les noms de certains fichiers ont un peu évolué.

Comme nous étions pressés, le client me renvoyait les fichiers corrigés dés qu’ils étaient disponibles. Au final, je refaisais l’importation des 20 jeux de données quasiment tous les jours, en modifiant à chaque fois mes lignes de commandes pour m’adapter aux modifications des noms.

C’est donc à cette occasion que je me suis posée cette question : comment importer plusieurs jeux de données, de façon automatisée, dans R? Et accessoirement consacrer mon temps à des tâches plus intéressantes !

J’ai rapidement pu mettre en place une procédure, que je vais vous expliquer, en pas à pas, dans ce post. Elle se déroule en 4 étapes :

  1. Placez les fichiers de données dans un dossier spécifique.
  2. Récupérez automatiquement la liste des noms des fichiers présents
    (avec leur extension, “.csv”, par exemple)
  3. Créez une liste des noms des données à partir des noms des fichiers
    (en supprimant la partie extension)
  4. Importez chaque fichier grâce à la liste des noms des fichiers, et
    en lui donnant le nom adéquat grâce à la liste des noms des données.

Il faut faire une distinction entre d’une part les noms des fichiers de données qui contiennent l’extension .csv. Et d’autre part, les noms des jeux de données, qui ne doivent pas contenir cette extension, et qui en pratique correspondent aux données à proprement parlé.

Pour ceux qui sont pressés, le code est là :

 

Pour les autres, je détaille les étapes en pas à pas, dessous !

1. Organisez votre travail sous la forme d’un projet R.

Avant de parler de la procédure en elle-même, je vous conseille d’organiser votre travail sous la forme d’un projet R. Si vous ne savez pas ce que c’est, allez voir mon article Importer facilement vos données dans le logiciel
R
, et plus particulièrement la section Organisez votre espace de travail sous la forme d’un projet R.

Ensuite, créez un dossier data dans votre working directory. Pour cela, utilisez l’outil New Folder de R studio, qui se trouve dans la fenêtre en bas à droite.

création dossier R studio

création dossier dans R Studio

 

Placez y tous les fichiers de données que vous souhaitez importer. Comme expliqué dans mon article 12 conseils pour organiser efficacement vos données dans un tableur, utilisez préférentiellement un format .csv. Ce format ne dépendant pas d’un logiciel, il peut être lu par n’importe lequel.

Pour illustrer cet article, j’ai créé un dossier “data”, dans lequel j’ai simplement placés 10 jeux de données au format csv.

importation de plusieurs fichiers dans R

 

2. Récupérez les noms des fichiers de données grâce à la fonction “list.files”

Si les jeux de données ne sont pas directement stockés dans le working directory (c’est le cas ici puisqu’ils ont été placés dans le dossier “data” du working directory), la fonction list.files a besoin qu’on lui précise le chemin d’accés vers le dossier data à l’aide de l’argument path.

La fonction here du package here est utilisée pour construire ce chemin d’accès.

Ainsi, si j’utilise la commande here("data") j’obtiens en sortie le chemin d’accés du dossier “data” de mon working directory :

La commande complète donne :

Comme vous pouvez le voir, la fonction file_list renvoie un vecteur de chaines de caractères qui contiennent l’extension .csv. On va alors supprimer cette partie pour générer les noms des jeux de données.

 

3. Créez la liste des noms des jeux de données

Pour cela, on va couper les noms des fichiers, en utilisant la fonction strsplit, et en indiquant dans l’argument split où couper. Voici comment ça fonctionne avec le premier jeu de données par exemple :

Les doubles crochets nous montrent que la fonction strsplit ne renvoie pas un vecteur mais un un objet de type list, c’est important pour la suite !

A présent, ce qu’on souhaite c’est reproduire la même procédure avec tous les fichiers de données. Pour cela, on peut utiliser une boucle for par exemple.

On commence alors par récupérer le nombre de fichiers à importer, en utilisant la commande length(files_names).

Ensuite, on crée (on peut dire initialiser) un objet de type liste, vide, pour recevoir les sorties de la fonction strsplit, autrement dit pour stocker les noms des jeux de données, c’est à dire, les chaines de caractères tronquées. Pour plus d’infos sur les objet de type liste, je vous recommandes le livre R for DataScience de Garrett Grolemund et
Hadley Wickham
, qui est consultable ici.

 

Et enfin on utilise la boucle for pour récupérer successivement les noms de tous les jeux de données.

 

4.Importez les jeux de données et les nommer correctement

Pour cette dernière étape, on utilise une fonction souvent méconnue, la fonction assign. Cette fonction est très pratique car elle permet d’assigner ou d’attribuer un nom à un objet.

Le principe va donc être d’importer les jeux de données en utilisant la fonction read.csv2, et de leur assigner les noms correspondant. On le fait successivement pour chacun de jeu de données, à l’aide d’une boucle for.

 

Comme précédemment, la commande paste(here("data", files_names[i])sert simplement à former le chemin d’accés. C’est en quelque sort un raccourci pour écrire “C:/<Users/clair/Documents/MesAnalysesStats/Temperature_Riviere/data/LifeCycleSavings.csv”.

On utilise des double crochets pour data_names car on souhaite avoir accès au contenu de l’élément de cette liste. Vous pouvez voir la différence entre les simples et les doubles crochets ici :

 

A la fin de l’exécution de la boucle, on peut voir que les jeux de données ont été chargés dans le workspace.

importation de plusieurs fichiers dans R

 

En résumé, mises bout à bout les ligne de commandes sont :

 

Et si vos jeux de données possèdent les mêmes variables, par exemple parce qu’il s’agit des mêmes informations mesurées à des temps ou dans des lieux différents, et que vous voulez les “empiler” pour ne faire qu’u seul jeu de données complet, vous pouvez utiliser les lignes suivantes :

J’espère que cet article permettra au débutants de bien comprendre comment importer plusieurs jeux de données de manière automatisée.

Si vous êtes un utilisateur confirmé de R et que vous avez d’autres procédures, indiquez les moi en commentaire.

Et si cet article vous a plu, n’oubliez pas de le partager.

 

Crédits photos : geralts.

 

 

Retrouvez ici 3 de mes articles les plus consultés:

12 conseils pour organiser efficacement vos données dans un
tableur

Comment insérer des références bibliographiques dans un document
Rmarkdown
?

Comment retrouver sous R une couleur employée avec Excel
?

Partager l'article
  •  
  •  
  •  
  •  
  •  
    6
    Partages
  • 6
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *