[R] Measure the frequencies of pairs in a matrix

David L Carlson dcarlson at tamu.edu
Thu Oct 8 15:08:35 CEST 2015


More like this?

> mat <- structure(c(5, 6, 5, 5, 4, 3, 6, 7, 4, 7, 5, 5, 5, 5, 6, 5, 5,
+ 4, 3, 6, 7, 4, 7, 5, 5, 5, 6, 5, 4, 5, 5, 7, 5, 6, 3, 5, 6, 7,
+ 6, 6, 5, 4, 5, 5, 7, 5, 6, 3, 5, 6, 7, 6), .Dim = c(26L, 2L))
> 
> # Convert columns in mat so first column is always smaller
> mat2 <- data.frame(t(apply(mat, 1, range)))
> mat2$X1 <- factor(mat2$X1, 1:9)
> mat2$X2 <- factor(mat2$X2, 1:9)
> tbl <- xtabs(~X1+X2, mat2)
> tbl.p <- tbl/sum(tbl)
> round(tbl.p, 2)
   X2
X1     1    2    3    4    5    6    7    8    9
  1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  3 0.00 0.00 0.00 0.08 0.00 0.00 0.08 0.00 0.00
  4 0.00 0.00 0.00 0.00 0.15 0.00 0.00 0.00 0.00
  5 0.00 0.00 0.00 0.00 0.08 0.38 0.15 0.00 0.00
  6 0.00 0.00 0.00 0.00 0.00 0.00 0.08 0.00 0.00
  7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

This puts everything on the diagonal and upper triangle. To get the lower triangle just use

> tbl <- xtabs(~X2+X1, mat2)

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352



-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Hermann Norpois
Sent: Wednesday, October 7, 2015 12:17 AM
To: Boris Steipe; r-help
Subject: Re: [R] Measure the frequencies of pairs in a matrix

Ok, this was misleading. And was not that important. My result matrix
should look like this:

  1    2   3   4   5   6   7 ...
1 p1 p2
2 p
3
4

p1 etc are the frequencies of the combinations

1 and 2 for instance do not appear in my example. So the values would be
zero. Actually, this part is not too important. I would be happy enough to
solve the challenge with the frequencies of the pairs.
Thanks Hermann

2015-10-07 2:40 GMT+02:00 Boris Steipe <boris.steipe at utoronto.ca>:

> Since order is not important to you, you can order your pairs (e.g.
> decreasing) before compiling the frequencies.
> But I don't understand the second part about values "that do not appear in
> the matrix". Do you mean you want to assess all combinations? If that's the
> case I would think about a hash table or other indexed data structure,
> rather than iterating through a matrix.
>
>
> B.
>
>
>
> On Oct 6, 2015, at 4:59 PM, Hermann Norpois <hnorpois at gmail.com> wrote:
>
> > Hello,
> >
> > I have a matrix mat (see dput(mat))
> >
> >> mat
> >      [,1] [,2]
> > [1,]    5    6
> > [2,]    6    5
> > [3,]    5    4
> > [4,]    5    5
> > ....
> >
> > I want the frequencies of the pairs in a new matrix, whereas the
> > combination 5 and 6 is the same as 6 and 5 (see the first two rows of
> mat).
> > In other words: What is the probability of each combination (each row)
> > ignoring the order in the combination. As a result I would like to have a
> > matrix that includes rows and cols 0, 1, 2 ... max (mat) that do not
> appear
> > in my matrix.
> >
> > dput (mat)
> > structure(c(5, 6, 5, 5, 4, 3, 6, 7, 4, 7, 5, 5, 5, 5, 6, 5, 5,
> > 4, 3, 6, 7, 4, 7, 5, 5, 5, 6, 5, 4, 5, 5, 7, 5, 6, 3, 5, 6, 7,
> > 6, 6, 5, 4, 5, 5, 7, 5, 6, 3, 5, 6, 7, 6), .Dim = c(26L, 2L))
> >
> > Thanks
> > Hermann
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.



More information about the R-help mailing list