This is definitely a hack, but it gets the job done. X<-model.matrix(~0+pheno,data=data) data2<-apply(X,2,function(X){tapply(X,data$ID,sum)}) data2
phenoAppendicitis phenoAutism phenoBreast Cancer phenoMicrocephaly phenoPolyps A 1 0 1 1 0 B 0 1 0 0 1 C 0 1 0 0 0 D 1 0 1 0 1 E 0 0 1 0 0 -tgs On Thu, May 6, 2010 at 3:27 PM, Min-Han Tan <minhan.scie...@gmail.com>wrote: > Dear R-help list, > > Apologies. I am trying to convert one table to another. It feels that it > should be a very straightforward answer with a single (or two) commands > with > the right extensions, but I really can't figure this out right now. I have > several hundred pheno factors actually, so manually doing this line by line > is not an option. > > My original table is approximately like this : > > ID pheno > 1 A Breast Cancer > 2 A Appendicitis > 3 A Microcephaly > 4 B Polyps > 5 B Autism > 6 C Autism > 7 D Breast Cancer > 8 D Polyps > 9 D Appendicitis > 10 E Breast Cancer > > > What I want is this : > ID Breast Cancer Appendicitis Microcephaly Polyps Autism A 1 1 1 B 1 > 1 C 1 D 1 1 E 1 > > The data is here > data <- > data.frame(ID=c(rep("A",3),rep("B",2),rep("C",1),rep("D",3),rep("E",1)), > pheno=c("Breast > Cancer","Appendicitis","Microcephaly","Polyps","Autism","Autism","Breast > Cancer","Polyps","Appendicitis","Breast Cancer")) > > Thank you very much! Many apologies. > > Min-Han > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > [[alternative HTML version deleted]] ______________________________________________ R-help@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.