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 :

Problème bouclage importation et convertion data.frame


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut Problème bouclage importation et convertion data.frame
    Bonjour à tous,

    Mon souci fait suite à la discussion précédemment résolue à cette adresse: ICI

    Pour faire court, je dois importer des fichiers « .csv » d’environ 105000 lignes et 5 colonnes ayant pour nom l’ID d’une machine (ex : « 80288.csv »)

    Sauf que le fichier comporte dans la colonne 3 un séparateur de milliers empêchant R de le reconnaitre comme étant un « num ».

    Voulant automatiser la procédure d’importation des fichiers et de conversion de la colonne 3, j’ai créé un ficher « .txt » regroupant le nom des machines à étudier : « exp_design_test.txt ». J’utilise le code suivant pour les récupérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # Set Project Working Directory
    #--------------------------------------------------------------------------------------------------
     
    setwd("//inter.rsag.site/home/2001/arnaud.lucas/Projet/Etude correlation/2_Pertes_prod_R/1_Test_export_data/2_Raw_data_storage_test")
    WD=getwd()
     
    # import experimental design
    #--------------------------------------------------------------------------------------------------
     
    exp_design<-read.table(paste(WD,"1_experimental_design/exp_design_test.txt",sep="/"), quote="\"")
     
    # Import Measurement Values
    #--------------------------------------------------------------------------------------------------
     
    for(i in 1:5)
    {exp_read=expression(read.csv2(paste(WD,"/3_reguard_meas_values/",exp_design[i,1],".csv",sep=""),dec=",",skip=0,stringsAsFactors=FALSE))
     wec_name=paste("reg.meas.",exp_design[i,1],sep="")
     wec_powercol=paste(wec_name,"[,3]",sep="")
     eval(parse(text=paste(wec_name,"<-",exp_read,sep="")))
     convert<-function(x){as.numeric(gsub("[[:space:]]","",gsub(",",".",x)))}
    #             --------------------------------  
    eval(parse(text=paste(wec_powercol,"<-",convert(wec_powercol),sep="")))
    #ou 
    eval(parse(text=paste(wec_powercol,"<-",lapply(wec_powercol,convert),sep="")))
    Le problème se produit à partir du moment ou je veux modifier la colonne 3 du data.frame crée avec la fonction convert. Il ne reconnait pas wec_powercol (ayant pour valeur par exemple: reg.meas.20888[,3]) comme étant un objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reg.meas.80288[,3]<-test(reg.meas.80288[,3])
    J'ai essayé un peu toutes les combinaisons possibles mais je n'arrive pas implémenter la conversion dans ma boucle alors que si je l'effectue manuellement sur mes data.frames une fois qu'ils ont été importés, tout se passe bien et l'opération met à peine une fraction de seconde.

    Quelqu'un aurait-il une idée du problème que je rencontre?

    En PJ un zip avec un fichier ".csv" et le fichier "exp_design_test.txt" nécessaire pour faire tourner le bordel.

    En vous remerciant par avance
    Fichiers attachés Fichiers attachés

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Je n'ai malheureusement pas de réponse à apporter à votre problème pour le moment (j'ai effectué quelques tests mais sans succès), alors je me contenterais juste d'une petite remarque : il serait plus judicieux de définir la fonction "convert" en dehors de la boucle, dans la mesure où c'est la même quel que soit i.

    Voilà, désolée, pas mieux
    Bonne continuation !


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Bonjour A. D.

    Merci d'avoir essayé. Pour ma part j'en suis toujours au même point.

    Sinon j'ai suivi votre conseil et j'ai modifié la localisation de ma fonction "convert".

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Bonjour,

    bon j'ai finalement réussi. C'était juste une question de syntaxe. Je me suis obstiné à utiliser des variables intermédiaires en pensant que ce serait plus facile alors qu'il fallait jouer les brutes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    test<-function(x){as.numeric(gsub("[[:space:]]","",gsub(",",".",x)))}
     
    for(i in 1:5)
    {
     exp_read=expression(read.csv2(paste(WD,"/3_reguard_meas_values/",exp_design[i,1],".csv",sep=""),dec=",",skip=0,stringsAsFactors=FALSE))
     wec_name=paste("reg.meas.",exp_design[i,1],sep="")
     eval(parse(text=paste(wec_name,"<-",exp_read,sep="")))
     expression<-parse(text=paste("reg.meas.",exp_design[i,1],"[,3]","<-","test(",paste("reg.meas.",exp_design[i,1],"[,3]",")",sep=""),sep=""))
     eval(expression)
     }
    rm(i)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'import de fichier CSV via LOAD DATA
    Par Aenur56 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/06/2012, 15h03
  2. Réponses: 1
    Dernier message: 29/03/2010, 12h42
  3. Problème d'import avec LOAD DATA INFILE
    Par Mister Paul dans le forum Requêtes
    Réponses: 18
    Dernier message: 18/01/2008, 11h33
  4. Problème d'importation sous Data Integrator
    Par bmasimo dans le forum ODI (ex-Sunopsis)
    Réponses: 1
    Dernier message: 11/04/2007, 11h52
  5. problème d'import " frame"
    Par K4trix dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 18/05/2006, 15h06

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