# [R] Binning a 2 column matrix by avarages of rows.

David Winsemius dwinsemius at comcast.net
Sat Dec 17 20:24:32 CET 2011

```On Dec 17, 2011, at 2:47 AM, ali_protocol wrote:

>
> Newbie here.  Many apologies in advance for using the incorrect lingo.
> I'm new to statistics and VERY new to R.

> I have a "nx2" matrix , I want to sort the values based on the
> average of 2
> columns and put k lowest (or highest) values in bin1, second k high/
> low
> values in bin2, and so on (bins would be of the same dimensions). I
> should
> also know what the first index (or position) of the pair has been.

Your posting is better than some first-timers from Nabble, but you
really ought to learn to post with code-created examples:

car-2	22	24
car-3	16	16
car-4	41	41
car-5	43	45
car-6	34	36")

> for exmample in bins of 2x2

Sort in order of ascending means:
> sdat <- dat[ order(apply(dat[,2:3], 1, mean)), ]

#Create a vector that allows grouping by twos
#Could have used simpler code if we were sure there were aneven number
of rows.

> rep(1:(NROW(sdat)/2 + 1), each=2, length=NROW(sdat))
#[1] 1 1 2 2 3 3

#Use split()
> split(sdat, rep(1:(NROW(sdat)/2 + 1), each=2, length=NROW(sdat)) )
\$`1`
V1 V2 V3
3 car-3 16 16
2 car-2 22 24

\$`2`
V1 V2 V3
1 car-1 29 30
6 car-6 34 36

\$`3`
V1 V2 V3
4 car-4 41 41
5 car-5 43 45

>
> bin1
> car-3	16	16
> car-2	22	24
> bin2
> car-1	29	30
> car-6	34	35
> bin3
> car-4	41	41
> car-5	43	45

--
David Winsemius, MD
West Hartford, CT

```