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?