[R] how to create a variable to rank within subgroups

Liaw, Andy andy_liaw at merck.com
Tue Jun 7 03:21:33 CEST 2005


Try something like:

> g <- gl(4, 5)
> x <- sample(20)
> d <- data.frame(g, x)
> d
   g  x
1  1 10
2  1  3
3  1 11
4  1 12
5  1 20
6  2 13
7  2  6
8  2  2
9  2  1
10 2 14
11 3 17
12 3 15
13 3 16
14 3 19
15 3  9
16 4  4
17 4  7
18 4  5
19 4  8
20 4 18
> d$xrank <- ave(d$x, d$g, FUN=rank)
> d
   g  x xrank
1  1 10     2
2  1  3     1
3  1 11     3
4  1 12     4
5  1 20     5
6  2 13     4
7  2  6     3
8  2  2     2
9  2  1     1
10 2 14     5
11 3 17     4
12 3 15     2
13 3 16     3
14 3 19     5
15 3  9     1
16 4  4     1
17 4  7     3
18 4  5     2
19 4  8     4
20 4 18     5

Andy

> From: Denis Chabot
> 
> Hi,
> 
> I would like to create a new variable that would be the rank of a  
> continuous variable within each level of a grouping variable. 
> Say the  
> first level of the grouping variable has 5 observations, I'd like  
> them ranked from one to five and a new variable would hold the rank  
> value (one to five). So forth for each level of the grouping variable.
> 
> I'm quite new with R and cannot figure out this one by myself.
> 
> Thanks in advance,
> 
> Denis Chabot
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
> 
>




More information about the R-help mailing list