[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:

dat <- read.table(text="car-1	29  30
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



More information about the R-help mailing list