[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