quantile {base} | R Documentation

## Sample Quantiles

### Description

The generic function `quantile` produces sample quantiles corresponding to the given probabilities. The smallest observation corresponds to a probability of 0 and the largest to a probability of 1.

### Usage

    quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
             names = TRUE, ...)

### Arguments

`x` | numeric vectors whose sample quantiles are wanted.
`probs` | numeric vector with values in [0,1].
`na.rm` | logical; if true, any `NA` and `NaN`'s are removed from `x` before the quantiles are computed.
`names` | logical; if true, the result has a `names` attribute. Set to `FALSE` for speedup with many `probs`.
`...` | further arguments passed to or from other methods.

### Details

A vector of length `length(probs)` is returned; if `names = TRUE`, it has a `names` attribute.

`quantile(x,p)` as a function of `p` linearly interpolates the points ( (i-1)/(n-1), ox[i] ), where `ox <- sort(x)` and `n <- length(x)`.

This gives `quantile(x, p) == (1-f)*ox[i] + f*ox[i+1]`, where `r <- 1 + (n-1)*p`, `i <- floor(r)`, `f <- r - i` and `ox[n+1] := ox[n]`.

`NA` and `NaN` values in `probs` are propagated to the result.

### See Also

`ecdf` (in the `stepfun` package) for empirical distributions of which `quantile` is the "inverse". `boxplot.stats` and `fivenum` for computing ``versions'' of quartiles, etc.

### Examples

    quantile(x <- rnorm(1001))# Extremes & Quartiles by default
    quantile(x,  probs=c(.1,.5,1,2,5,10,50, NA)/100)

    n <- length(x) ## the following is exact, because 1/(1001-1) is exact:
    stopifnot(sort(x) == quantile(x, probs = ((1:n)-1)/(n-1), names=FALSE))

    n <- 777
    ox <- sort(x <- round(rnorm(n),1))# round() produces ties
    ox <- c(ox, ox[n]) #- such that ox[n+1] := ox[n]
    p <- c(0,1,runif(100))
    i <- floor(r <- 1 + (n-1)*p)
    f <- r - i
    all(abs(quantile(x,p) - ((1-f)*ox[i] + f*ox[i+1])) < 20*.Machine$double.eps)

[Package Contents]