Calculates multiple percentile values from a time series, with flexible time aggregation.

## Usage

``````calcPercentile(
mydata,
pollutant = "o3",
avg.time = "month",
percentile = 50,
data.thresh = 0,
start = NA
)``````

## Arguments

mydata

A data frame of data with a `date` field in the format `Date` or `POSIXct`. Must have one variable to apply calculations to.

pollutant

Name of variable to process. Mandatory.

avg.time

Averaging period to use. See `timeAverage()` for details.

percentile

A vector of percentile values. For example ```percentile = 50``` for median values, `percentile = c(5, 50, 95` for multiple percentile values.

data.thresh

Data threshold to apply when aggregating data. See `timeAverage()` for details.

start

Start date to use - see `timeAverage()` for details.

## Value

Returns a data frame with new columns for each percentile level. New columns are given names like percentile.95 e.g. when percentile = 95 is chosen. See examples below.

## Details

This is a utility function to calculate percentiles and is used in, for example, `timePlot`. Given a data frame with a `date` field and one other numeric variable, percentiles are calculated.

`timePlot`, `timeAverage()`

David Carslaw

## Examples

``````# 95th percentile monthly o3 concentrations
percentiles <- calcPercentile(mydata, pollutant ="o3",
avg.time = "month", percentile = 95)

#>         date percentile.95
#> 1 1998-01-01            14
#> 2 1998-02-01             7
#> 3 1998-03-01            15
#> 4 1998-04-01            20
#> 5 1998-05-01            25
#> 6 1998-06-01            15

# 5, 50, 95th percentile monthly o3 concentrations
if (FALSE) { # \dontrun{
percentiles <- calcPercentile(mydata, pollutant ="o3",
avg.time = "month", percentile = c(5, 50, 95))