HI David, Thanks for your input. Third and fourth solutions looks very interesting.
with(dat1,tapply(coef,list(ind1,ind2),function(x) x)) # also gave the same result. # I tried with aggregate() and ddply(), but may be not as elegant solution as yours. matrix(with(dat1,aggregate(coef,list(ind1,ind2),FUN=function(x) x)[,3]),nc=4) library(plyr) matrix(ddply(dat1,.(ind1,ind2),FUN=function(x) x$coef)[,3],nc=4) # [,1] [,2] [,3] [,4] #[1,] 1.000 0.250 0.125 0.5 #[2,] 0.250 1.000 0.125 0.5 #[3,] 0.125 0.125 1.000 0.5 #[4,] 0.500 0.500 0.500 1.0 A.K. ----- Original Message ----- From: David Winsemius <dwinsem...@comcast.net> To: arun <smartpink...@yahoo.com> Cc: "Hadjixenofontos, Athena" <ahadjixenofon...@med.miami.edu>; R help <r-help@r-project.org>; Bert Gunter <gunter.ber...@gene.com> Sent: Monday, October 1, 2012 10:33 PM Subject: Re: [R] Transform pairwise observations into a table On Oct 1, 2012, at 2:30 PM, arun wrote: > HI AHJ, > No problem. > > One more way in addition to reshape() (Rui's suggestion) to get the same > result. > library(reshape) > > as.matrix(cast(melt(dat1,id=c("ind1","ind2")),ind1~ind2,value="value")) > # 1 2 3 4 > #1 1.000 0.250 0.125 0.5 > #2 0.250 1.000 0.125 0.5 > #3 0.125 0.125 1.000 0.5 > #4 0.500 0.500 0.500 1.0 > A.K. > That looks a tad ... well, ... complicated. So perhaps these base-only solutions with tapply might be more accessible: Some of them do border on the whimsical, I will admit: with (dat1, tapply(coef, list(ind1,ind2), I)) with (dat1, tapply(coef, list(ind1,ind2), c)) with (dat1, tapply(coef, list(ind1,ind2), "^", 1)) with (dat1, tapply(coef, list(ind1,ind2), "+", 0)) It is a specific response to the request for a `table`-like function tha twouldallow the application of other functions. Cnage the `1` to `2` in the third instance and you get the tabulated squares. And do not forget the availability of `ftable` to flatten the output of `tapply` retunred values. -- David. > > > ----- Original Message ----- > From: "Hadjixenofontos, Athena" <ahadjixenofon...@med.miami.edu> > To: arun <smartpink...@yahoo.com> > Cc: R help <r-help@r-project.org> > Sent: Monday, October 1, 2012 12:59 PM > Subject: Re: [R] Transform pairwise observations into a table > > Thank you. I had looked at xtabs but misunderstood the syntax. This is great. > :) > > AHJ > > > > On Oct 1, 2012, at 12:53 PM, "arun" <smartpink...@yahoo.com> wrote: > >> Hi, >> Try this: >> >> dat1<-read.table(text=" >> ind1 ind2 coef >> 1 1 1 >> 1 2 0.25 >> 1 3 0.125 >> 1 4 0.5 >> 2 2 1 >> 2 1 0.25 >> 2 3 0.125 >> 2 4 0.5 >> 3 3 1 >> 3 1 0.125 >> 3 2 0.125 >> 3 4 0.5 >> 4 4 1 >> 4 1 0.5 >> 4 2 0.5 >> 4 3 0.5 >> ",sep="",header=TRUE) >> mat1<-as.matrix(xtabs(coef~ind1+ind2,data=dat1)) >> >> # ind2 >> #ind1 1 2 3 4 >> # 1 1.000 0.250 0.125 0.500 >> #2 0.250 1.000 0.125 0.500 >> #3 0.125 0.125 1.000 0.500 >> #4 0.500 0.500 0.500 1.000 >> >> A.K. >> >> >> >> ----- Original Message ----- >> From: AHJ <ahadjixenofon...@med.miami.edu> >> To: r-help@r-project.org >> Cc: >> Sent: Monday, October 1, 2012 12:17 PM >> Subject: [R] Transform pairwise observations into a table >> >> Hi, >> >> I have a table of pairs of individuals and a coefficient that belongs to the >> pair: >> >> ind1 ind2 coef >> 1 1 1 >> 1 2 0.25 >> 1 3 0.125 >> 1 4 0.5 >> 2 2 1 >> 2 1 0.25 >> 2 3 0.125 >> 2 4 0.5 >> 3 3 1 >> 3 1 0.125 >> 3 2 0.125 >> 3 4 0.5 >> 4 4 1 >> 4 1 0.5 >> 4 2 0.5 >> 4 3 0.5 >> >> And I want to convert it to a matrix where each individual is both a row and >> a column and at the intersection of each pair is the coefficient that >> belongs to that pair: >> >> 1 2 3 4 >> 1 1 0.25 0.125 0.5 >> 2 0.25 1 0.125 0.5 >> 3 0.125 0.125 1 0.5 >> 4 0.5 0.5 0.5 1 >> >> If table() would allow me to specify something other than frequencies to >> fill the table with, it would be what I need. I tried a few different >> combinations of t() and unique() but none of it made enough sense to post as >> my starting code... I am just lost. Any help would be greatly appreciated. >> >> Thank you, >> AHJ >> >> >> >> -- >> View this message in context: >> http://r.789695.n4.nabble.com/Transform-pairwise-observations-into-a-table-tp4644706.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> 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. >> > > > ______________________________________________ > 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. David Winsemius, MD Alameda, CA, USA ______________________________________________ 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.