| rank | R Documentation |
Returns the sample ranks of the values in a vector. Ties (i.e., equalvalues) and missing values can be handled in several ways.
rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min"))x | a numeric, complex, character or logical vector. |
na.last | for controlling the treatment of |
ties.method | a character string specifying how ties are treated,see ‘Details’; can be abbreviated. |
If all components are different (and noNAs), the ranks arewell defined, with values inseq_along(x). With some values equal(called ‘ties’), the argumentties.method determines theresult at the corresponding indices. The"first" method resultsin a permutation with increasing values at each index set of ties, andanalogously"last" with decreasing values. The"random" method puts these in random order whereas thedefault,"average", replaces them by their mean, and"max" and"min" replaces them by their maximum andminimum respectively, the latter being the typical sportsranking.
NA values are never considered to be equal: forna.last = TRUE andna.last = FALSE they are given distinct ranks inthe order in which they occur inx.
NB:rank is not itself generic butxtfrmis, andrank(xtfrm(x), ....) will have the desired result ifthere is axtfrm method. Otherwise,rank will make useof==,>,is.na and extraction methods forclassed objects, possibly rather slowly.
A numeric vector of the same length asx with names copied fromx (unlessna.last = NA, when missing values areremoved). The vector is of integer type unlessx is a longvector orties.method = "average" when it is of double type(whether or not there are any ties).
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)The New S Language.Wadsworth & Brooks/Cole.
order andsort;xtfrm, see above.
(r1 <- rank(x1 <- c(3, 1, 4, 15, 92)))x2 <- c(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)names(x2) <- letters[1:11](r2 <- rank(x2)) # ties are averaged## rank() is "idempotent": rank(rank(x)) == rank(x) :stopifnot(rank(r1) == r1, rank(r2) == r2)## ranks without averagingrank(x2, ties.method= "first") # first occurrence winsrank(x2, ties.method= "last") # last occurrence winsrank(x2, ties.method= "random") # ties broken at randomrank(x2, ties.method= "random") # and again## keep ties ties, no average(rma <- rank(x2, ties.method= "max")) # as used classically(rmi <- rank(x2, ties.method= "min")) # as in Sportsstopifnot(rma + rmi == round(r2 + r2))## Comparing all tie.methods:tMeth <- eval(formals(rank)$ties.method)rx2 <- sapply(tMeth, function(M) rank(x2, ties.method=M))cbind(x2, rx2)## ties.method's does not matter w/o ties:x <- sample(47)rx <- sapply(tMeth, function(MM) rank(x, ties.method=MM))stopifnot(all(rx[,1] == rx))
Add the following code to your website.
For more information on customizing the embed code, readEmbedding Snippets.