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 <dwinsem...@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]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.