2011-05-04 5 views
10

J'ai des données dans une trame de 139104 lignes qui est multiple de 96x1449. J'ai un fichier de phénotype qui contient les informations sur le phénotype pour les 96 échantillons. le nom snp est répété 1449X96 échantillons. Je dois fusionner les deux dataframes basés sur sid et sen. voici comment mes deux dataframes ressembler àfusion de deux trames de données dans R

dat <- data.frame(
    snpname=rep(letters[1:12],12), 
    sid=rep(1:12,each=12), 
    genotype=rep(c('aa','ab','bb'), 12) 
) 
pheno <- data.frame(
    sen=1:12, 
    disease=rep(c('N','Y'),6), 
    wellid=1:12 
) 

Je dois fusionner ou ajouter la colonne de la maladie et 3 autres colonnes dans le fichier de données. Je suis incapable d'utiliser la fusion dans R. J'ai cherché google, je ne suis pas frapper les termes corrects pour obtenir la réponse. J'apprécierais toute contribution sur cette question.

Merci, Sharad

+5

'dat <- fusionner (dat, phéno, by.x = "sid", par .y = "sen", all = TRUE) – Ista

+2

Pour la dernière utilisation, ne manquez pas la [snpMatrix] (http://www.bioconductor.org/packages/2.3/bioc/html/snpMatrix.html) (efficace stockage de données génotypiques, GLM rapides), [snpAssoc] (http://cran.r-project.org/web/packages/SNPassoc/index.html) (convivial), ou [GenABEL] (http: // www.genabel.org/) paquets. La plupart permettent de construire une structure spécifique (ou environnement, avec [GGtools] (http://www.bioconductor.org/packages/2.2/bioc/html/GGtools.html)) pour manipuler et fusionner des données de génotype et de phénotype. – chl

+0

@Ista, la prochaine fois que vous répondez. De cette façon, vous pouvez être récompensé d'une petite manière. –

Répondre

9

Vous pouvez spécifier les colonnes que vous souhaitez apparier directement avec merge():

merge(dat, pheno, by.x = "sid", by.y = "sen") 
Questions connexes