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 <[email protected]>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]]
>
> ______________________________________________
> [email protected] 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]]
______________________________________________
[email protected] 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.