reshape dataframe
Does this do what you want:
x<-data.frame(id=c(1,2,3), snp1=c("AA","GG",
+ "AG"),snp2=c("GG","AG","GG"),snp3=c("GG","AG","AA"))
do.call(rbind, apply(x, 1, function(.row){
+ data.frame(c(.row[1], .row[1]), + strsplit(.row[2], ''), + strsplit(.row[3], ''), + strsplit(.row[4], '')) + })) c..row.1....row.1.. snp1 snp2 snp3 1 1 A G G 2 1 A G G 3 2 G A A 4 2 G G G 5 3 A G A 6 3 G G A On Fri, Mar 20, 2009 at 10:29 AM, Duijvesteijn, Naomi
<Naomi.Duijvesteijn at ipg.nl> wrote:
? Hi,
? I have a large dataset on which I would like to do the following:
? x<-data.frame(id=c(1,2,3), snp1=c("AA","GG",
? "AG"),snp2=c("GG","AG","GG"),snp3=c("GG","AG","AA"))
? > x
? ? id snp1 snp2 snp3
? 1 ?1 ? AA ? GG ? GG
? 2 ?2 ? GG ? AG ? AG
? 3 ?3 ? AG ? GG ? AA
? And ?then reshape the dataset in such a way that the individuals get 2
? observations for every snp by splitting the genotypes (in this case):
? id snp1 snp2 snp3
? 1 A G A
? 1 A G G
? 2 G A G
? 2 G G G
? 3 G A A
? 3 G G A
? It is probably quite easy to solve, but I can?t get it right?
? Thanks for your help and valuable time!
? Naomi Duijvesteijn
? Disclaimer: ?De ?informatie opgenomen in dit bericht (en bijlagen) kan
? vertrouwelijk zijn en is uitsluitend bestemd voor de geadresseerde(n).
? Indien u dit bericht ten onrechte ontvangt, wordt u geacht de inhoud niet te
? gebruiken, de afzender direct te informeren en het bericht te vernietigen.
? Aan dit bericht kunnen geen rechten of plichten worden ontleend.
? ----------------------------------------------------------------------------
? ----------------------------
? Disclaimer: The information contained in this message may be confidential
? and is intended to be exclusively for the addressee. Should you receive this
? message unintentionally, you are expected not to use the contents herein, to
? notify the sender immediately and to destroy the message. No rights can be
? derived from this message.
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?