rank {base} | R Documentation |
Sample Ranks
Description
Returns the sample ranks of the values in a numeric vector. Ties, i.e., equal values, result in ranks being averaged, by default.
Usage
rank(x, na.last = TRUE,
ties.method = c("average", "first", "random", "max", "min"))
Arguments
x |
a numeric vector. |
na.last |
for controlling the treatment of |
ties.method |
a character string specifying how ties are treated, see below; can be abbreviated. |
Details
If all components are different, the ranks are well defined, with
values in 1:n
where n <- length(x)
and we assume no
NA
s for the moment. Otherwise, with some values equal, called
‘ties’, the argument ties.method
determines
the result at the corresponding indices. The "first"
method
results in a permutation with increasing values at each index set of
ties. The "random"
method puts these in random order whereas the
default, "average"
, replaces them by their mean, and
"max"
and "min"
replaces them by their maximum and
minimum respectively, the latter being the typical “sports”
ranking.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.
See Also
order
and sort
.
Examples
(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 averaging
rank(x2, ties.method= "first") # first occurrence wins
rank(x2, ties.method= "random") # ties broken at random
rank(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 Sports
stopifnot(rma + rmi == round(r2 + r2))