# intervalValueCalculate: Calculates a single value that is a function of an... In growthPheno: Plotting, Smoothing and Growth Trait Extraction for Longitudinal Data

## Description

Splits the values of a response into subsets corresponding individuals and applies a function that calculates a single value from each individual's observations during a specified time interval. It includes the ability to calculate the observation number that is closest to the calculated value of the function and the assocated values of a `factor` or `numeric`.

## Usage

 ```1 2 3 4``` ```intervalValueCalculate(response, weights=NULL, individuals = "Snapshot.ID.Tag", FUN = "max", which.obs = FALSE, which.values = NULL, start.time=NULL, end.time=NULL, times.factor = "Days", suffix.interval=NULL, data, sep=".", na.rm=TRUE, ...) ```

## Arguments

 `response` A `character` giving the name of the column in `data` from which the values of `FUN` are to be calculated. `weights` A `character` giving the name of the column in `data` containing the weights to be supplied as `w` to `FUN`. `individuals` A `character` giving the name(s) of the `factor`(s) that define the subsets of the `data` for which each subset corresponds to the `response` value for an individual. `FUN` A `character` giving the name of the `function` that calculates the value for each subset. `which.obs` A `logical` indicating whether or not to determine the observation number corresponding to the observed value that is closest to the value of the function, in addition to the value of the function itself. That is, `FUN` need not return an observed value of the `reponse`, e.g. `quantile`. `which.values` A `character` giving the name of the `factor` or `numeric` whose values are associated with the `response` values and whose value is to be returned for the observation number whose `response` value corresponds to the observed value closest to the value of the function. That is, `FUN` need not return an observed value of the `reponse`, e.g. `quantile`. In the case of multiple observed response values satisfying this condition, the value of the `which.values` vector for the first of these is returned. `start.time` A `numeric` giving the times, in terms of levels of `times.factor`, that will give a single value for each `Snapshot.ID.Tag` and that will be taken as the observation at the start of the interval for which the growth rate is to be calculated. If `start.time` is `NULL`, the interval will start with the first observation. In the case of multiple observed response values satisfying this condition, the first is returned. `end.time` A `numeric` giving the times, in terms of levels of `times.factor`, that will give a single value for each `Snapshot.ID.Tag` and that will be taken as the observation at the end of the interval for which the growth rate is to be calculated. If `end.time` is `NULL`, the interval will end with the last observation. `times.factor` A `character` giving the name of the column in `data` containing the factor for times at which the data was collected. Its levels should be numeric values stored as characters. `suffix.interval` A `character` giving the suffix to be appended to `response` to form the name of the column containing the calculated values. If it is `NULL` then nothing will be appended. `data` A `data.frame` containing the column from which the function is to be calculated. `na.rm` A `logical` indicating whether `NA` values should be stripped before the calculation proceeds. `sep` A `character` giving the separator to use when the levels of `individuals` are combined. This is needed to avoid using a `character` that occurs in a factor to delimit levels when the levels of `individuals` are combined to identify subsets. `... ` allows for arguments to be passed to `FUN`.

## Value

A `data.frame`, with the same number of rows as there are `individuals`, containing a column for the `individuals` and a column with the values of the function for the `individuals`. It is also possible to determine observaton numbers or the values of another column in `data` for the `response` values that are closest to the `FUN` results, using either or both of `which.obs` and `which.values`. If `which.obs` is `TRUE`, a column with observation numbers is included in the `data.frame`. If `which.values` is set to the name of a `factor` or a `numeric`,a column containing the levels of that `factor` or the values of that `numeric` is included in the `data.frame`.

The name of the column with the values of the function will be result of concatenating the `response`, `FUN` and, if it is not `NULL`, `suffix.interval`, each separated by a full stop. If `which.obs` is `TRUE`, the column name for the obervations numbers will have `.obs` added after `FUN` into the column name for the function values; if `which.values` is specified, the column name for these values will have a full stop followed by `which.values` added after `FUN` into the column name for the function values.

## Author(s)

Chris Brien

`intervalGRaverage`, `intervalGRdiff`, `intervalWUI`, `splitValueCalculate`, `getTimesSubset`
 ``` 1 2 3 4 5 6 7 8 9 10``` ```data(exampleData) Area.smooth.max <- intervalValueCalculate("Area.smooth", start.time = 31, end.time = 35, suffix.interval = "31to35", data = longi.dat) AGR.max.dat <- intervalValueCalculate("Area.smooth.AGR", FUN="max", start.time = 31, end.time = 35, suffix.interval = "31to35", which.values = "Days", which.obs = TRUE, data=longi.dat) ```