quantile                package: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 <- 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)

