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 :

extraction d'informations d'un fichier


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut extraction d'informations d'un fichier
    Bonjour,

    Je souhaite extraire un certain nombre d'informations d'un fichier (geneCount.csv.tsv) comportant des milliers de lignes et 2 colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ID=EHI_072740;Name=EHI_072740;description=hypothetical+protein;size=1758;web_id=EHI_072740;locus_tag=EHI_072740;size=1758;Alias=3287.t00002,3287.m00024_0	106
    ID=EHI_043440;Name=EHI_043440;description=regulator+of+nonsense+transcripts%2C+putative;size=3445;web_id=EHI_043440;locus_tag=EHI_043440;size=3445;Alias=3062.t00001_1	342
    ID=EhLINE1_157_1	6
    ID=EhLINE1_158_1	7
    ID=EhLINE2_106_1	4
    ...
    Le résultat que je souhaite obtenir est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    EHI_072740	106
    EHI_043440	342
    EhLINE1_157_1	6
    EhLINE1_158_1	7
    EhLINE2_106_1	4
    Après quelques heures de test, voilà ce que j'obtiens (fichier construction_matrix) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    x
    1	x
    2	1	ID=EHI_072740
    3	2	ID=EHI_043440
    4	3	ID=EhLINE1_157_1
    5	4	ID=EhLINE1_158_1
    6	5	ID=EhLINE2_106_1
    Je commence par lire mon fichier initial, dont je recopie la première colonne. Je lis ce nouveau fichier en choisissant comme séparateur ";", ce qui me permet de me débarasser ensuite de ce que je ne veux pas. Le problème est qu'à chaque fois, j'ai une indexation automatique et un "x" et je ne sais pas comment les enlever

    Voici le code que j'utilise (comme j'ai 6 fichiers de ce type, j'utilise en plus paste()):
    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
     
    for (s in s_lane)
    {
    chemin=paste("Donnees/amibe/Bowtie/geneCount/L",s,".geneCount.csv.tsv",sep="")
    donnees <- read.delim(chemin, header=FALSE, sep="\t",stringsAsFactors=TRUE )
     
    write.table(donnees[,1],file=paste("Donnees/amibe/Bowtie/geneCount/construction",s,".txt",sep=""),sep="\t", quote=FALSE)
    }
     
     
     
    for (s in s_lane)
    {
    chemin2=paste("Donnees/amibe/Bowtie/geneCount/construction",s,".txt",sep="")
    donnees2 <- read.delim(chemin2, header=FALSE, sep=";" ) #,stringsAsFactors=TRUE
     
    write.table(donnees2[,1],file=paste("Donnees/amibe/Bowtie/geneCount/construction_matrix",s,".txt",sep=""),sep="\t", quote=FALSE)
    }
    Je pensais que c'était dans les options de write.table, mais je n'ai rien trouvé de ce côté là ! J'espère que quelqu'un peut m'éclairer un peu

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    Alors, j'avance un peu !
    C'est bien avec les options de write.table() que l'on peut enlever les x et indexation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    row.names=FALSE, col.names=FALSE
    Mon fichier final donne maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ID=EHI_072740
    ID=EHI_043440
    ID=EhLINE1_157_1
    ID=EhLINE1_158_1
    ID=EhLINE2_106_1
    Prochaine étape : supprimer "ID=" dans chaque ligne. Je sais qu'avec les fonctions grep, substring, je peux chercher des parties de chaînes de caractères, mais existe-t-il une commande pour les supprimer ?

  3. #3
    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,

    Une idée "basique" qui me vient (mais il y a probablement une manière plus "jolie" de procéder) :

    Sauvegarder les données qui sont de la forme "ID=EHI_072740" dans un fichier "dataID" par exemple. Puis charger ce fichier dans R en prenant comme séparateur le symbole " = ". Il reste ensuite à supprimer le première colonne qui ne contiendra que des "ID".


    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.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    Bonjour,

    Merci pour l'idée, ça me permet d'obtenir ce que je veux !

    Au final, j'ai utilisé la fonction strsplit() sur mon data.frame converti avec as.character, ce qui permet d'optimiser un peu ce que j'avais fait. Ensuite, je relis mon fichier avec sep="=" et j'ai enfin le résultat escompté

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

Discussions similaires

  1. [XPATH 1.0] Extraction d information d' un fichier datasource de JBoss
    Par Orpheus67 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/05/2012, 15h00
  2. extraction d'information d'un fichier text
    Par g.abdou dans le forum Unix
    Réponses: 2
    Dernier message: 14/08/2010, 16h15
  3. Réponses: 4
    Dernier message: 05/12/2009, 23h50

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