-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
Of David Winsemius
Sent: Monday, October 01, 2012 7:33 PM
To: arun
Cc: R help; Bert Gunter; Hadjixenofontos, Athena
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" <AHadjixenofontos at med.miami.edu>
To: arun <smartpink111 at yahoo.com>
Cc: R help <r-help at 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" <smartpink111 at 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 <ahadjixenofontos at med.miami.edu>
To: r-help at 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.