rank {base} | R Documentation |

## Sample Ranks

### Description

Returns the sample ranks of the values in a 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, complex, character or logical vector. |

`na.last` |
for controlling the treatment of `NA` s.
If `TRUE` , missing values in the data are put last; if
`FALSE` , they are put first; if `NA` , they are removed; if
`"keep"` they are kept. |

`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))

[Package

*base* version 2.1.0

Index]