[Debutant] Lire CSV dans une boucle

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Pierre Mathieu
Messages : 6
Enregistré le : 09 Mai 2017, 12:22

[Debutant] Lire CSV dans une boucle

Messagepar Pierre Mathieu » 17 Mai 2017, 15:05

Bonjour,

J'ai des fichiers CSV de types result_data_001.csv , result_data_002.csv,....result_data_013.csv

J'ai fait une boucle qui me permet de charger les fichiers :

Code : Tout sélectionner

folder <- "C:/Users/Pierre/Documents/R/test/data/"
file_list <- list.files(path = folder, pattern = "*.CSV")

for (i in 1:length(file_list))
{
  assign(file_list[i], read.csv(paste(folder, file_list[i], sep =''), header = FALSE, skip = 3)[, 1:9])
}


Cependant comment faire pour récupérer les valeurs contenues dans les fichiers CSV ?

Cdt,
Pierre.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: [Debutant] Lire CSV dans une boucle

Messagepar Pierre-Yves Berrard » 18 Mai 2017, 07:59

Bonjour,

Votre boucle est censée créer 13 data.frame nommés
result_data_001.csv , result_data_002.csv,....result_data_013.csv
dans l'espace de travail.

Ce n'est pas le cas ?
PY

Pierre Mathieu
Messages : 6
Enregistré le : 09 Mai 2017, 12:22

Re: [Debutant] Lire CSV dans une boucle

Messagepar Pierre Mathieu » 18 Mai 2017, 14:58

C'est le cas, cependant je n'arrivais pas a récupérer les valeurs contenus dans les data frame.

J'ai résolu mon problème en mettant les valeurs dans un vecteur :

Code : Tout sélectionner

folder <- "C:/Users/Pierre/Documents/R/test/data/"
file_list <- list.files(path = folder, pattern = "*.CSV")
data <- vector ()
for (i in 1:length(file_list))
{
  data_csv <- read.csv(paste(folder, file_list[i], sep =''), header = FALSE, skip = 3)[, 1:12]
  data<- c(data, as.vector(data_csv))
}

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: [Debutant] Lire CSV dans une boucle

Messagepar Gabriel Terraz » 18 Mai 2017, 15:50

Salut,

Je trouve dommage de tout mettre dans un vecteur, puisque tu vas perdre la structure de tes dataframe... Tu serais un peu plus précis dans dans ce que tu veux, ce que tu as comme messages d'erreurs et tes données, on pourrait t'aider un peu mieux.

En tout cas, tant qu'à tout mettre dans un seul objet, autant que cela soit une liste de dataframe, avec un code beaucoup plus simple :

Code : Tout sélectionner

folder <- "C:/Users/Pierre/Documents/R/test/data/"
file_list <- list.files(path = folder, pattern = "*.CSV")

data <- lapply(file_list, read.csv, header = F, skip = 3)

Pierre Mathieu
Messages : 6
Enregistré le : 09 Mai 2017, 12:22

Re: [Debutant] Lire CSV dans une boucle

Messagepar Pierre Mathieu » 19 Mai 2017, 09:53

Gabriel,

Mes fichiers csv contiennent des données de types :

Code : Tout sélectionner

0.12  0.16  0.18  0.21  0.26  0.28
0.30  0.33  0.39  0.42  0.37  0.26
0.22  0.19  0.16  0.14  0.11  0.09

Les valeurs sont lues ligne par ligne

Lorsque je fait ce code :

Code : Tout sélectionner

folder <- "C:/Users/Pierre/Documents/R/test/data/"
file_list <- list.files(path = folder, pattern = "*.CSV")

data <- lapply(file_list, read.csv, header = F, skip = 3)


J'ai comme message d'erreur :
Error in file(file, "rt") :
(converted from warning) cannot open file 'result_data_001.csv': No such file or directory

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: [Debutant] Lire CSV dans une boucle

Messagepar Gabriel Terraz » 19 Mai 2017, 11:45

Le warning te fit juste que le dit fichier n'existe pas. JE vois pas exactement d'où vient le problème (changement d'espace de travail entre la création de la liste de fichier et leur lecture ?).
Un point étrange : l'extension de ton fichier est en majuscule dans la fonction list.files mais le warning est en majuscule... Vérifie le contenu de file_list, la présence des fichiers dans le dossier, et que tu es bien dans le bon espace de travail avant de passer à la suite.

Une autre possibilité si tu travailles sous windows est que les extensions soient cachées. Va dans affichage et décoche "masquer les extensions connus" ou quelque chose dans le genre.

Pierre Mathieu
Messages : 6
Enregistré le : 09 Mai 2017, 12:22

Re: [Debutant] Lire CSV dans une boucle

Messagepar Pierre Mathieu » 19 Mai 2017, 15:25

L'extension des fichiers est bien .CSV en majuscule, les fichiers sont bien présents dans le dossier, je suis dans le bon espace de travail. Le code au dessus fonctionne très bien, mais je ne vois pas pourquoi celui-ci non ..
Je vais continuer avec ce code la !

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: [Debutant] Lire CSV dans une boucle

Messagepar Pierre-Yves Berrard » 19 Mai 2017, 15:41

Gabriel Terraz a écrit :Le warning te fit juste que le dit fichier n'existe pas. JE vois pas exactement d'où vient le problème (changement d'espace de travail entre la création de la liste de fichier et leur lecture ?).

À mon avis, c'est parce que folder n'est pas le wd.
Il faut faire un "paste" comme dans le code avec la boucle for.
PY


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité