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

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    février 2013
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : février 2013
    Messages : 550
    Points : 181
    Points
    181

    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 éprouvé
    Inscrit en
    novembre 2009
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 523
    Points : 1 031
    Points
    1 031

    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 habitué
    Homme Profil pro
    Inscrit en
    février 2013
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : février 2013
    Messages : 550
    Points : 181
    Points
    181

    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