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 :

Lire un fichier dont une de ses colonne est formaté différemment


Sujet :

R

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut Lire un fichier dont une de ses colonne est formaté différemment
    Bonjour,

    Je souhaite lire un fichier qui se compose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id c1    c2     paramètre
    1 val1 val2    a = 1, b = 2
    2 val1 val2    b = 1
    3 val1 val2    c = 5, a = 2
    (s'il y a plusieurs paramètres ce sera toujours séparé par une virgule)

    Le problème est la colonne paramètre que je n'arrive pas récupérer correctement puisqu'il décompose chaque caractères en les mettant dans des nouvelles colonnes.


    Comment puis-je faire pour récupérer les valeurs de paramètre pour les mettre dans une seul colonne ?

  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 Importer un fichier sans séparateur
    Bonjour,


    • L'idéal serait d'avoir un fichier avec séparateur de variables (point-virgule, tabulation...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    df <- read.csv2(text="
    id;c1;c2;parametre
    1;val1;val2;a = 1, b = 2
    2;val1;val2;b = 1
    3;val1;val2;c = 5, a = 2
    ")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df
      id   c1   c2    parametre
    1  1 val1 val2 a = 1, b = 2
    2  2 val1 val2        b = 1
    3  3 val1 val2 c = 5, a = 2
    • Si le fichier est colonné (c'est-à-dire que toutes les valeurs sont alignées), vous pouvez utiliser la fonction read.fwf() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df <- read.fwf("d:/temp/test.txt", widths=c(1,1,4,1,4,4,12), skip=1)
    df <- df[,-c(2,4,6)]
    names <- unlist(read.table("d:/temp/test.txt",nrows=1))
    names(df) <- names
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df
      id   c1   c2    parametre
    1  1 val1 val2 a = 1, b = 2
    2  2 val1 val2        b = 1
    3  3 val1 val2 c = 5, a = 2
    ou la fonction read.fortran() qui permet de spécifier le format des variables et de sauter des colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    df <- read.fortran("d:/temp/test.txt", c("I1","X","A4","X","A4","X4","A12"), skip=1)
    names <- unlist(read.table("d:/temp/test.txt",nrows=1))
    names(df) <- names
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df
      id   c1   c2    parametre
    1  1 val1 val2 a = 1, b = 2
    2  2 val1 val2        b = 1
    3  3 val1 val2 c = 5, a = 2
    • Si le fichier n'est pas colonné, vous pouvez importer le fichier en une seule variable, supprimer les espaces gênantes, découper la variable avec la fonction word() et remettre les espaces dans la variable parametre (j'ai modifié id=1 en id=10 dans votre exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    df <- read.table("d:/temp/test.txt", header=FALSE, sep="§", skip=1)
    library(stringr)
    df$V1 <- str_replace_all(df$V1," = ","=")
    df$V1 <- str_replace_all(df$V1,", ",",")
    df$V1 <- str_replace(df$V1,"    "," ")
    df$id <- word(df$V1,1)
    df$c1 <- word(df$V1,2)
    df$c2 <- word(df$V1,3)
    df$parametre <- word(df$V1,4)
    df$parametre <- str_replace_all(df$parametre,"="," = ")
    df$parametre <- str_replace_all(df$parametre ,",",", ")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df
                        V1 id   c1   c2    parametre
    1 10 val1 val2 a=1,b=2 10 val1 val2 a = 1, b = 2
    2      2 val1 val2 b=1  2 val1 val2        b = 1
    3  3 val1 val2 c=5,a=2  3 val1 val2 c = 5, a = 2
    Cordialement,

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    bonjour,
    merci de votre aide.

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

Discussions similaires

  1. Lire les fichiers copiés d'une base de données
    Par zaac01 dans le forum Installation
    Réponses: 5
    Dernier message: 18/11/2007, 16h30
  2. Réponses: 1
    Dernier message: 01/06/2007, 13h50
  3. Lire des fichiers à envoyer par une servlet
    Par loic911 dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2007, 16h31
  4. Réponses: 3
    Dernier message: 05/03/2007, 23h54
  5. Réponses: 3
    Dernier message: 19/02/2007, 23h01

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