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 :

fonction pour ouvrir un csv et faire un calcul automatique


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut fonction pour ouvrir un csv et faire un calcul automatique
    Bonjour à tous

    Je débute avec R, et j'aimerai créer une fonction avec trois arguments, un pour le répertoire, un pour la colonne dans le fichier correspondant, et un qui précise le fichier, qui me fera ensuite le calcule que je veux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pollutantmean<-function (directory,pollutant,id){
     
        setwd(directory)
     
        fichier<- read.csv(id)
     
        extraction<- fichier[[pollutant]]
     
        x<-mean(extraction,na.rm=TRUE)
        x
     
     
    }
    En fait dans mon répertoire correspondant j'ai des centaines de csv différents avec le même format de colonnes par contre. J'aimerai extraire les données d'une colonne choisis et y faire la moyenne par exemple, mais ça ne fonctionne pas... j'ai bidouillé plein de truc différent mais ça n'avance pas beaucoup... en dehors de la fonction, étape par étape ça fonctionne, mais avec les variables dans la fonction, ça ne veut pas...

    Error in getwd(directory) : unused argument (directory)

    Il me sort ça, alors que je l'utilise bien mon argument...

    Les fichiers csv sont appelé par un chiffre de 001 à plus de 300... J'aimerai aussi faire un calcul en choisissant les données de plusieurs fichiers différents, par exemple taper 1:10 pour faire la moyenne commune des 10 premiers fichiers pour la colonne que j'ai choisis... Pour plus de lumière, chaque fichier correspond à une ville en fait.

    pollutantmean("specdata","sulfate",001:010)


    Merci pour les quelques lumières que vous pourrez m'apporter....

  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 Fonction pour ouvrir un csv et faire un calcul automatique
    Bonjour,

    Le problème se situe dans l'appel de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > pollutantmean<-function(directory,pollutant,id){
    +     setwd(directory)
    +     fichier<- read.csv(id)
    +     extraction<- fichier[[pollutant]]
    +     x<-mean(extraction,na.rm=TRUE)
    +     x
    + }
    > 
    > pollutantmean("D:/temp","V1","10.csv")
    [1] 27.66667
    Votre fonction permet de traiter un fichier à la fois.

    Vous pouvez regarder ce message qui calcule la moyenne des colonnes de plusieurs fichiers.

    Cordialement,

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    OK oui mais surtout, je ne testais aucune de mes modifications, j'oubliais de sourcer ma fonction chaque fois... erreur de débutant...

    je met ma solution là si ça peut aider quelqu'un ...

    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
    ma_fcontion<-function (repertoire,nom_colonne,id=1:332){
     
     
        fichier<- list.files(repertoire,full.names = TRUE)
          lecture<-data.frame()
          nb<-c(id)
          for (i in nb) {
            lecture<- rbind(lecture,read.csv(fichier[i]))  
        }
        extraction<- lecture[,nom_colonne]
     
        x<-mean(extraction,na.rm=TRUE)
        x
     
     
    }

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

Discussions similaires

  1. [Toutes versions] macro pour ouvrir un csv sans conversion numérique
    Par El_Nebu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2011, 14h03
  2. Commande ou fonction pour ouvrir tiroir disque
    Par majudis dans le forum Débuter
    Réponses: 2
    Dernier message: 09/10/2009, 09h35
  3. fonction pour ouvrir des fichiers
    Par ashley dans le forum C
    Réponses: 8
    Dernier message: 26/08/2009, 16h55
  4. Réponses: 4
    Dernier message: 05/11/2007, 11h21
  5. Quelle fonction pour "ouvrir" un fichier ?
    Par Pierre.g dans le forum Windows
    Réponses: 2
    Dernier message: 07/05/2007, 00h02

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