This help topic is for R version 1.5.0. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/quantile.html
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

## Default S3 method:
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 <- order(x) (the “order statistics”) 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 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 base version 1.5.0 ]