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 :

travail complexe sur data frame


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 21
    Points
    21
    Par défaut travail complexe sur data frame
    Salut!

    Je travaille sur un data frame que je voudrais par la suite utiliser comme base de données. Pour le contexte, je dois récupérer des données sur des gènes à partir d'expériences de microarray, comme par exemple le symbole du gène, l'identifiant sonde, le GB_acc, le titre du gène, et son identifiant en base de données (entrez, unigene... en fonction de ce qui est dispo).

    Je vous mets un exemple de deux morceaux de tableaux que j'obtiens à partir de 2 expériences différentes sur des technologies différentes:

    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
    Tableau1
    ID	GeneSymbol	GeneTitle	                                                                                      GBAcc
    4	Prr13 	        proline rich 13	                                                                                    NM_025385
    9	Pla2g4d	        phospholipase A2, group IVD	                                                                    NM_001024137
    10	Tmem59l     	transmembrane protein 59-like	                                                                    NM_182991
    15	Spty2d1	        SPT2, Suppressor of Ty, domain containing 1 (S. cerevisiae)	                                    NM_175318
    25829	Copg  	        coatomer protein complex, subunit gamma	                                                            NM_017477
    11826	Atp6v0d1	ATPase, H+ transporting, lysosomal V0 subunit D1	                                            NM_013477
    12269	Iigp1	        interferon inducible GTPase 1	                                                                    NM_001146275
    12943	Agpat1	        1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	    NM_001163379
     
    Tableau2
    ID	     GeneSymbol	        GeneTitle	                                                                                 GBAcc	       ENTREZ
    1415670_at	Copg	     coatomer protein complex, subunit gamma	                                                         BC024686	54161
    1415671_at	Atp6v0d      ATPase, H+ transporting, lysosomal V0 subunit D1	                                                 NM_013477	11972
    1415672_at	Golga7	     golgi autoantigen, golgin subfamily a, 7	                                                         NM_020585	57437
    1415673_at	Psph	     phosphoserine phosphatase	                                                                         NM_133900	100678
    1423686_a_at	Prr13        proline rich 13	                                                                                 BC016234	66151
    1421024_at	Agpat1	     1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	 BB524140	55979
    1421025_at	Agpat1	     1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	 BB524140	55979
    J'ai utilisé la fonction merge et j'obtiens le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    GeneTitle	                                                                                   ID.x         GeneSymbol.x	GBAcc.x	       ENTREZ   ID.y    GeneSymbol.y    GBAcc.y
    1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	1421024_at	Agpat1	       BB524140	        55979	12943	Agpat1	        NM_001163379
    1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	1421025_at	Agpat1	       BB524140	        55979	12943	Agpat1	        NM_001163379
    ATPase, H+ transporting, lysosomal V0 subunit D1	                                        1415671_at	Atp6v0d1       NM_013477	11972	11826	Atp6v0d1	NM_013477
    coatomer protein complex, subunit gamma	                                                        1415670_at	Copg	       BC024686      	54161	25829	Copg	        NM_017477
    proline rich 13	                                                                                1423686_a_at	Prr13	       BC016234	        66151	  4	Prr13	        NM_025385
    D'un côté j'obtiens bien ce que je veux : ce sous-tableau mergé ne me renvoie que les entrées GeneTitle en commun entre les deux tableaux.
    Maintenant mon problème c'est, dans cet exemple, le cas de Agpat1 que l'on retrouve avec 2 identifiants de sonde différents pour une même technologie.

    Ce que je voudrais faire à ce moment-là (et par la suite je pense que ça sera le même principe pour des noms de gènes, ou des symboles)
    c'est transformer ces deux lignes Agpat1 pour avoir le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Avant (Extrait)
    GeneTitle	                                                                                   ID.x	       GeneSymbol.x    GBAcc.x     ENTREZ     ID.y     GeneSymbol.y     GBAcc.y
    1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	1421024_at     Agpat1          BB524140    55979      12943      Agpat1      NM_001163379
    1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)	1421025_at     Agpat1          BB524140    55979      12943      Agpat1      NM_001163379
    Après (le changement d'ordre des colonnes est involontaire, il n'a pas d'importance dans mon cas)
    ID.x                     ID.y    GeneSymbol  GeneTitle                                                                                        GBAcc    ENTREZ
    1421024_at,1421025_at   12943    Agpat1      1-acylglycerol-3-phosphate O-acyltransferase 1 (lysophosphatidic acid acyltransferase, alpha)    BB524140 55979
    Et j'avoue que je ne vois pas comment faire. Est-ce que quelqu'un aurait une idée?

    Merci d'avance!

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f=function(x){return(paste(x,collapse=","))}
    apres = aggregate(ID.x ~ ID.y+GeneSymbol.x+GeneTitle.x+GBAcc.y+ENTREZ,data=avant,f)
    Ou un truc du genre.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 21
    Points
    21
    Par défaut
    Ca marche nickel! Je ne connaissais pas la fonction aggregate

    Merci beaucoup!

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

Discussions similaires

  1. mean() sur ligne data.frame : problème des levels
    Par AustinPower999 dans le forum R
    Réponses: 0
    Dernier message: 01/04/2013, 22h11
  2. apply sur data.frame
    Par jane40 dans le forum R
    Réponses: 3
    Dernier message: 07/01/2013, 12h09
  3. [Info]travail collaboratif sur Eclipse 3.0
    Par TheWoz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/05/2005, 21h12
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  5. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50

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