IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Importer csv dans plusieurs dataframe avec boucle for


Sujet :

R

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Importer csv dans plusieurs dataframe avec boucle for
    Bonjour,

    Après moultes recherches, je me retourne vers vous. Je souhaite créer des tables en important des csv qui se terminent par une année dans le nom. Je souhaite que les tables créées contiennent l'année du fichier.

    Cela me donne quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (i in 2000:2019) {
     
      table_i <- read.csv(file=paste0("./table_import",i,".csv"))
     
    }
    l'instruction read fonctionne bien, mais je n'arrive pas à créer mes tables avec mon nom de variable i.

    Avez-vous une solution à me proposer ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Nom d'objet variable
    Bonjour,

    Vous pouvez utiliser la fonction assign() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > i <- 1
    > assign(paste0("var",i),10)
    > var1
    [1] 10
    Cordialement,

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci de la réponse, je vais essayer. Cependant, vous n'utilisez pas la variable i dans votre exemple. Mais je vais creuser quand je pourrais, je ne suis pas au travail donc je ne peux pas encore tester.

    Je vous tiens informer.

    Bonne journée

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci j'ai réussi. Dans mon cas, cela me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i in 2000:2019) {
     
      assign( paste0("table_" ,i), read.csv(file=paste0("./table_import",i,".csv")))
    }
    Assez tordu comme solution mais fonctionnelle.

    Pour ma culture, lorsque j'utilise une variable dans un nom de variable ou de table, je dois toujours utiliser paste ? Je ne peux pas faire appel à ma variable en précédant de % ou autre caractère ?

    Merci

  5. #5
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Nom d'objet variable
    Bonjour,

    Cette discussion m'a fait penser qu'il est possible de boucler sur la liste des fichiers plutôt que sur les années :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    liste_fichiers <- list.files("D:/temp", pattern="table_import[[:digit:]]{4}.csv$", full.names=TRUE)
    n=length(liste_fichiers)
    for (i in 1:n) 
      {
      nomdf <- basename(unlist(liste_fichiers[i]))
      nomdf <- stringr::str_replace(nomdf,"import","")
      nomdf <- stringr::str_replace(nomdf,".csv$","")
      df <- read.csv(liste_fichiers[i])
      assign(nomdf, df)
      }
    Cordialement

Discussions similaires

  1. [XL-2010] import .csv dans plusieurs colonnes
    Par loncle dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/08/2017, 12h34
  2. [AC-2007] ouvrir plusieurs états avec boucle FOR...NEXT
    Par sylv20 dans le forum IHM
    Réponses: 5
    Dernier message: 30/06/2011, 10h58
  3. Import fichier csv dans plusieurs tables
    Par Gbillou dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/11/2009, 15h57
  4. Réponses: 4
    Dernier message: 17/03/2008, 16h41
  5. faire plusieur declaration avec boucle for ?
    Par debutant-1 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2006, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo