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 :

Comparaison de fichier


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Comparaison de fichier
    Bonjour,

    Je démarre en r, et j'aimerai comparer deux fichier.

    -> gene_splite: tableau de 986 ligne et 14 colonnes. La 1ere colonne contient toujours un gène. Les colonne 2 a 14 contiennent soit un gène, soit sont vides
    -> gene_list: vecteur contenant une liste de gènes

    Je souhaiterai ajouter une colonne dans gene_splite qui indiquerait si la ligne de ce tableau contient un gène qu'on peut retrouver dans gene_list.
    J'ai fait plusieurs tentative, mais les résultats ne correspondent pas à ma vérification manuelle sur les premières lignes. Pourriez vous m'aider à voir où se situe le problème



    Voici à quoi ressemble gene_splite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     [,1]             [,2]                 [,3]              [,4]             [,5]             [,6]               [,7]            [,8]         [,9]     [,10]    [,11]    [,12]   
      [1,] "TPOJSF18"       ""                   ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [2,] "MLI4"           "B3AZVT6"            ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [3,] "POJU2"          ""                   ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [4,] "POJU2"          "PAZK4"              ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [5,] "SPM45B1"        ""                   ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [6,] "UPO4B"          ""                   ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""      
      [7,] "CTUY6"          "MNUFR"              ""                ""               ""               ""                 ""              ""           ""       ""       ""       ""
    Voici à quoi ressemble gene_list

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     [1] "ABS1"      "ABST"       "ABCZ2"      "AJPB7"      "ASDC9"      "ABSD"      "AB4"      "ABJK5"      "POK9"      "THIO"      "LOKL"      "UTRC"       "OTRA"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    for (i in 1:nrow(gene_splite)){
     for (j in 1:ncol(gene_splite)){
       for (k in gene_list){
         if (gene_splite[i,j] == k)
        {
         gene_splite$Present[i] ="yes"
         }
     
      }}}



    Désolé, si mon message n'est pas bien formaté, je ne savais pas comment faire.
    N'hésitez pas à me demander plus d'information pour pouvoir m'aider

    Merci d'avance,

    Aline

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Aline.
    Apparemment tes données de départ, gene_splite, sont dans une matrice (je suppose vu l'affichage) plutôt qu'un data.frame. Pas de souci.
    On peut tout simplement poser la question à R que gene_splite %in% gene_list : ça renvoie TRUE ou FALSE pour chaque élément de la matrice gene_splite. On a juste à stocker le résultat dans une autre matrice.
    Et si tu as besoin de sortir des stats par ligne ou colonne tu pourras utiliser des sum sur cette matrice via la fonction apply.

    Par contre, quand tu proposes un exemple (je dis ça pour de futures questions) : 1) essaye de fournir un moyen de créer tes données ; 2) essaye que ton exemple soit facile à comprendre (ici il n'y avait aucun gène en commun entre la liste et la matrice... Je me suis permis d'en ajouter à la fin de gene_list).

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    gene_split <- t(matrix(c ("TPOJSF18"  ,     ""            ,       ""      ,          ""     ,          ""       ,        ""         ,        ""         ,     ""      ,     ""      , ""      , ""    ,   "",      
                          "MLI4"          , "B3AZVT6" ,           ""  ,              "" ,              ""   ,            ""     ,            ""     ,         ""  ,         ""  ,     ""  ,     "",       "",      
                          "POJU2"       ,   ""              ,     ""        ,        ""       ,        ""         ,      ""           ,      ""           ,   ""        ,   ""       ,""       ,""      , "",      
                          "POJU2"       ,   "PAZK4"   ,           ""  ,              "" ,              ""   ,            ""     ,            ""     ,         ""  ,         ""  ,     ""  ,     "",       "",      
                          "SPM45B1"   ,     ""            ,       ""      ,          ""     ,          ""       ,        ""         ,        ""         ,     ""      ,     ""      , ""      , ""    ,   "",      
                          "UPO4B"       ,   ""              ,     ""        ,        ""       ,        ""         ,      ""           ,      ""           ,   ""        ,   ""       ,""       ,""      , "",      
                          "CTUY6"       ,   "MNUFR"   ,           ""  ,              "" ,              ""   ,            ""     ,            ""     ,         ""  ,         ""  ,     ""  ,     "",       ""),
                         ncol=7, nrow=12))
    gene_list <- c("ABS1",
                   "ABST",
                   "ABCZ2",
                   "AJPB7",
                   "ASDC9",
                   "ABSD",
                   "AB4",
                   "ABJK5",
                   "POK9",
                   "THIO",
                   "LOKL",
                   "UTRC",
                   "OTRA",
                   "PAZK4",
                   "POJU2")
     
    ok <- matrix(gene_split %in% gene_list,
                    ncol=ncol(gene_split),
                    nrow=nrow(gene_split))
     
    # nombre de correspondances par ligne
    apply(ok, FUN=sum, MARGIN=1)
     
    # nombre de correspondances par colonne
    apply(ok, FUN=sum, MARGIN=2)
    Bon courage.
    Olivier

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci beaucoup pour votre méthode. J'ai réussi à rajouter ma colonne dans mon fichier et il me semble qu'il n'y a plus d'erreur.

    Par contre, j'ai dû modifier un peu ma commande pour rajouter ma colonne car malgré votre méthode, je retombais exactement sur les même résultats qu'avec ma première tentative en solo. J'ai pu plus facilement adapter votre méthode pour rajouter ma colonne et maintenant ça m'a l'air ok.

    En gros en appliquant votre commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Count=apply(ok, FUN=sum, MARGIN=1)
    j'obtenais ce vector

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     [1] 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
     [89] 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0
    [177] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
    [265] 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0
    [353] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0
    [441] 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
    [529] 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0
    [617] 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0
    [705] 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0
    [793] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
    [881] 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0
    [969] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
    Mais quand j'essayais de créer ma colonne j'obtenais cette colonne

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
     fichier$Present
      [1] NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA   
     [30] "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
     [59] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
     [88] "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes"
    [117] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA   
    [146] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [175] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [204] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [233] NA    "yes" NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" NA   
    [262] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [291] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA   
    [320] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [349] NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [378] "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [407] NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA   
    [436] "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [465] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [494] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [523] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [552] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [581] "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes"
    [610] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes"
    [639] NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes"
    [668] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes"
    [697] NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA   
    [726] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes"
    [755] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [784] "yes" NA    "yes" "yes" "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes"
    [813] "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [842] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes"
    [871] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [900] "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes"
    [929] NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA   
    [958] "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" NA    "yes" "yes" "yes" NA    "yes"
    Ce qui n'allait pas rien qu'à la 5ieme ligne et ce qui équivaut exactement à ce que j'obtenais avant de poster ma demande.

    J'ai réussi en utilisant une boucle for avec un if et un if not au lieu d'utiliser juste un if comme dans ma première tentative.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
      for (i in 1:length(Count)){
        if (Count[i]==1){
       fichier$Present[i]="Yes"}
        if (Count[i]==0){
          fichier$Present[i]="no"
        }
      }
    Encore merci pour votre aide.

    Aline

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

Discussions similaires

  1. Comparaison de fichiers text
    Par mick84m dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/07/2005, 16h48
  2. [Debutant(e)]comparaison de fichier : imprimer
    Par demostene dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/07/2004, 10h43
  3. Comparaison de fichiers Word
    Par Zelphalya dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2003, 15h15
  4. [langage] Comparaison de fichiers
    Par Jibees dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2003, 16h27
  5. Comparaison de fichier
    Par danzerg dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 11h49

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