[R] Generating groupings of ordered observations

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Sat, 21 Jun 2008 17:40:40 +0100


Dear List,

I have a problem I'm finding it difficult to make headway with.

Say I have 6 ordered observations, and I want to find all combinations of splitting these 6 ordered observations in g groups, where g = 1, ..., 6. Groups can only be formed by adjacent observations, so observations 1 and 4 can't be in a group on their own, only if 1,2,3&4 are all in the group.

For example, with 6 observations, the columns of the matrices below represent the groups that can be formed by placing the 6 ordered observations into 2-5 groups. Think of the columns of these matrices as being an indicator of group membership. We then cbind these matrices with the trivial partitions into 1 and 6 groups:

mat2g <- matrix(c(1,1,1,1,1,
                  2,1,1,1,1,
                  2,2,1,1,1,
                  2,2,2,1,1,
                  2,2,2,2,1,
                  2,2,2,2,2),
                nrow = 6, ncol = 5, byrow = TRUE)

mat3g <- matrix(c(1,1,1,1,1,1,1,1,1,1,
                  2,2,2,2,1,1,1,1,1,1,
                  3,2,2,2,2,2,2,1,1,1,
                  3,3,2,2,3,2,2,2,2,1,
                  3,3,3,2,3,3,2,3,2,2,
                  3,3,3,3,3,3,3,3,3,3),
                nrow = 6, ncol = 10, byrow = TRUE)

mat4g <- matrix(c(1,1,1,1,1,1,1,1,1,1,
                  2,2,2,2,2,2,1,1,1,1,
                  3,3,3,2,2,2,2,2,2,1,
                  4,3,3,3,3,2,3,3,2,2,
                  4,4,3,4,3,3,4,3,3,3,
                  4,4,4,4,4,4,4,4,4,4),
                nrow = 6, ncol = 10, byrow = TRUE)

mat5g <- matrix(c(1,1,1,1,1,
                  2,2,2,2,1,
                  3,3,3,2,2,
                  4,4,3,3,3,
                  5,4,4,4,4,
                  5,5,5,5,5),
                nrow = 6, ncol = 5, byrow = TRUE)

cbind(rep(1,6), mat2g, mat3g, mat4g, mat5g, 1:6)

I'd like to be able to do this automagically, for any (reasonable, small, say n = 10-20) number of observations, n, and for g = 1, ..., n groups.

I can't see the pattern here or a way forward. Can anyone suggest an approach?

Thanks in advance,

Gavin

-- 

%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
______________________________________________ R-help_at_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.
Received on Sat 21 Jun 2008 - 16:43:42 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sat 21 Jun 2008 - 22:30:54 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive