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 :

Importation des données "output" (CFINDER) et calcul de la moyenne des paires


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    Plant community ecologist, cryptogamist
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Plant community ecologist, cryptogamist
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Importation des données "output" (CFINDER) et calcul de la moyenne des paires
    Salut à tous,

    Je suis face à un problème de manipulation de données: je dois importer un fichier .txt (from_soft.txt, qui est l'output d'un freeware "CFINDER" qui recherche les 'cliques' dans un network). Lorsqu'on ouvre le fichier 'from_soft.txt' dans notepad, il est comme ceci:
    [..]output/from_soft:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # text-text-text-text-text-text-text-text-text-text-
    # text-text-text-text-text-text-text-text-text-text-
    # text-text-text-text-text-text-text-text-text-text-
    # text-text-text-text-text-text-text-text-text-text-
     
    1: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE
    2: SpeciesA SpeciesC SpeciesE SpeciesD SpeciesF SpeciesG SpeciesH
    3: SpeciesB SpeciesC SpeciesF
    4: SpeciesB SpeciesC SpeciesD SpeciesF SpeciesH
    [...]
    J'arrive à l'importer dans R grâce à readLines:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from_soft<-readLines("from_soft.txt",n=-1,ok=T,warn=T,encoding="unknow",skipNul=F)
    Et j'efface les premières lignes comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from_soft<-as.data.frame(from_soft)[-(1:5),]
    J'obtiens une table 'from_soft' comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    head(from_soft)
    [1] 0: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE   1: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE   2: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE  
    [4] 3: SpeciesB SpeciesC SpeciesD SpeciesF SpeciesH [...]
    D'un autre côté j'ai une table référentielle ('ref') qui indique la valeur de chaque paire d'espèces. Elle est structurée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    print(ref)
    3324   SpeciesA  SpeciesB       1
    3325   SpeciesA  SpeciesC       2
    3326   SpeciesA  SpeciesD      12
    3327   SpeciesA  SpeciesE       1
    3328   SpeciesA  SpeciesF      71
    3329   SpeciesA  SpeciesG       6
    3330   SpeciesA  SpeciesH      15
    3331   SpeciesB  SpeciesC       2
    3332   SpeciesB  SpeciesF       4
    3333   SpeciesB  SpeciesD      17
    [...]
    D'un point de vue concret, chaque ligne de 'from_soft' correspond à une 'clique' dans le graph du network. Cela signifie que chaque espèce d'une ligne est interconnectée (et donc forme des paires) à (avec) toutes les autres.

    Je voudrais donc calculer pour chaque ligne de 'from_soft' la moyenne de chaque paire.

    En exemple, pour la ligne 1: de 'from_soft', voici toutes les paires existantes (qui sont de fait aussi existantes dans la table 'ref') :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1: SpeciesASpeciesB|SpeciesASpeciesC|SpeciesASpeciesD|SpeciesASpeciesE|SpeciesBSpeciesC|SpeciesBSpeciesD|SpeciesBSpeciesE|SpeciesCSpeciesD|SpeciesCSpeciesE|SpeciesDSpeciesE|
    Chaque paire à une valeur dans 'ref' et j'aimerais avoir comme résultat une table qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1: 3.5 (= moyenne de toutes les paires dans la 'clique' '1:')
    2: 4.2
    3: 1.5
    4: 6
    [...]
    Auriez-vous quelques suggestions?

    Merci pour le coup de main!

    R.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Points : 888
    Points
    888
    Par défaut
    La fonction combn peut te donner toutes les paires possibles à partir d'un vecteur.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > combn(c("a","b","c","d"),2)
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,] "a"  "a"  "a"  "b"  "b"  "c" 
    [2,] "b"  "c"  "d"  "c"  "d"  "d"
    A partir de là rien de compliqué, il suffit d'imbriquer 2 boucles (un sapply sur from_soft et un apply sur les paires données par combn).

Discussions similaires

  1. Importation de données caractères avec quote
    Par caro92 dans le forum SAS Base
    Réponses: 3
    Dernier message: 25/11/2015, 09h59
  2. [QlikView] Calcul cumul au chargement des données
    Par tonton93 dans le forum QlikView
    Réponses: 3
    Dernier message: 23/03/2009, 13h49
  3. moyenne des donnes
    Par kovrov dans le forum Access
    Réponses: 5
    Dernier message: 20/03/2007, 23h14

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