This help topic is for R version 1.1. 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

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.

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 quantile is the "inverse".

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=F))

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.1 ]