Thank you everyone! We already use the Hmisc package so I'll likely use
cut2.

Ben

On Wed, Feb 22, 2012 at 2:22 PM, David Winsemius <dwinsemius@comcast.net>wrote:

>
> On Feb 22, 2012, at 4:01 PM, Ben quant wrote:
>
>  Hello,
>>
>> What is the best way to get ranks for a vector of values, limit the range
>> of rank values and create equal count in each group? I call this uniform
>> ranking...uniform count/number in each group.
>>
>> Here is an example using three groups:
>>
>> Say I have values:
>> x = c(3, 2, -3, 1, 0, 5, 10, 30, -1, 4)
>> names(x) = letters[1:10]
>>
>>> x
>>>
>> a  b  c  d  e  f   g   h   i   j
>> 3  2 -3  1  0  5 10 30 -1  4
>> I would like:
>> a  b  c  d  e  f  g  h  i  j
>> 2  2  1  2  1  3 3  3  1 3
>>
>> Same thing as above, maybe easier to see:
>> c   i  e  d  b  a   j   f  g   h
>> -3 -1  0  1  2  3  4  5 10 30
>> I would get:
>> c  i e d b a  j f  g h
>> 1 1 1 2 2 2 3 3 3 3
>>
>> Note that there are 4 values with a rank of 3 because I can't get even
>> numbers (10/3 = 3.333).
>>
>> Been to ?sort, ?order, ?quantile, ?cut, and ?split.
>>
>
> You may need to look more carefully at the definitions and adjustments to
> `cut` and `quantile` but this does roughly what you asked:
>
> n=3
> as.numeric( cut(x, breaks=quantile(x, prob=(0:n)/n) , include.lowest=TRUE)
> )
> @ [1] 1 1 1 1 2 2 2 3 3 3
>
> It a fairly common task and Harrell's cut2 function has a g= parameter
> (for number of groups)  that I generally use:
>
> library(Hmisc)
> >  cut2(x, g=3)
>  [1] [-3, 2) [-3, 2) [-3, 2) [-3, 2) [ 2, 5) [ 2, 5) [ 2, 5) [ 5,30] [
> 5,30] [ 5,30]
> Levels: [-3, 2) [ 2, 5) [ 5,30]
> >  as.numeric( cut2(x, g=3))
>  [1] 1 1 1 1 2 2 2 3 3 3
>
>
>
>
>> Thanks,
>>
>> Ben
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________**________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>> PLEASE do read the posting guide http://www.R-project.org/**
>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> David Winsemius, MD
> West Hartford, CT
>
>

	[[alternative HTML version deleted]]

