handleFlags,ctd-method {oce} | R Documentation

## Handle Flags in CTD Objects

### Description

Data-quality flags are stored in the `metadata` slot of `oce-class` objects in a `list` named `flags`. The present function (a generic that has specialized versions for various data classes) provides a way to manipulate the core data based on the data-quality flags. For example, a common operation is to replace suspicious or erroneous data with `NA`.

If `metadata$flags` in the object supplied as the first argument is empty, then that object is returned, unaltered. Otherwise, `handleFlags` analyses the data-quality flags within the object, in relation to the `flags` argument, and interprets the `action` argument to select an action to be applied to mached data.

Reasonable defaults are used if `flags` and `actions` are not supplied (see ‘Details’), but different schemes are used in different data archives, so it is risky to rely on these defaults. It is usually necessary to tailor `flags` and `actions` to the data and the analysis goals.

### Usage

    ## S4 method for signature 'ctd'
    handleFlags(object, flags = list(), actions = list())

### Arguments

`object` | A `ctd` object, i.e. one inheriting from `ctd-class`.

`flags`

An optional `list` containing (a) items with names of entries in the `data` slot of `object`, or (b) a single unnamed item. In the first case, the attention is focussed on the named items, while in the second case the all the data in the `object`'s `data` slot are examined. Each element in the list must be set to an integer or vector of integers, specifying conditions to be met before actions are to be taken.

`actions`

An optional `list` that contains items with names that match those in the `flags` argument. If `actions` is not supplied, the default will be to set all values identified by `flags` to `NA`; this can also be specified by specifying `actions=list("NA")`. It is also possible to specify functions that calculate replacement values. These are provided with `object` as the single argument, and must return a replacement for the data item in question.

### Details

If `flags` and `actions` are not provided, the default is to use WHP (World Hydrographic Program) flags [1], in which the value 2 indicates good data, and other values indicate either unchecked, suspicious, or bad data. Any data not flagged as good are set to `NA` in the returned value. (An exception is for salinity: if the item named `salinity` has a bad flag but `salinityBottle` has a good flag, then the bottle value is substituted, and a warning is issued.) Since WHP flag codes run from 1 to 9, this default is equivalent to setting `flags=list(all=c(1, 3:9))` along with `action=list("NA")`.

### Implementation status

`handleFlags` is a new function as of March 2016, and it will probably continue to evolve through the rest of 2016. Users are asked to be patient, and to provide help by looking at the documentation and telling the developers whether the planned functioning seems reasonable.

### References

1. https://www.nodc.noaa.gov/woce/woce_v3/wocedata_1/whp/exchange/exchange_format_desc.htm

### See Also

Other functions that handle data-quality flags: `handleFlags,argo-method`, `handleFlags,section-method`, `handleFlags`

Other things related to `ctd` data: `[[,ctd-method`, `[[<-,ctd-method`, `as.ctd`, `cnvName2oceName`, `ctd-class`, `ctdDecimate`, `ctdFindProfiles`, `ctdRaw`, `ctdTrim`, `ctd`, `plot,ctd-method`, `plotProfile`, `plotScan`, `plotTS`, `read.ctd.itp`, `read.ctd.odf`, `read.ctd.sbe`, `read.ctd.woce.other`, `read.ctd.woce`, `read.ctd`, `subset,ctd-method`, `summary,ctd-method`, `woceNames2oceNames`, `write.ctd`

### Examples

    library(oce)
    data(section)
    stn <- section[["station", 100]]
    # 1. Default: anything not flagged as 2 is set to NA, to focus
    # solely on 'good', in the World Hydrographic Program scheme.
    STN <- handleFlags(stn)
    data.frame(old=stn[['salinity']], flag=stn[['salinityFlag']], new=STN[['salinity']])

    # 2. A less restrictive case: include also 'questionable' data,
    # and only apply this action to salinity.
    STN <- handleFlags(stn, flags=list(salinity=c(1, 4:9)))

    # 3. Use smoothed TS relationship to nudge questionable data.
    # This is perhaps a silly idea, but at least it illustrates
    # how to write a nontrivial function for an action.
    f<-function(x) {
      S <- x[["salinity"]]
      T <- x[["temperature"]]
      df <- 0.5 * length(S) # smooths a bit
      sp <- smooth.spline(T, S, df=df)
      0.5 * (S + predict(sp, T)$y)
    }
    par(mfrow=c(1,2))
    STN <- handleFlags(stn, flags=list(salinity=c(1,3:9)), action=list(salinity=f))
    plotProfile(stn, "salinity", mar=c(3, 3, 3, 1))
    p <- stn[['pressure']]
    par(mar=c(3, 3, 3, 1))
    plot(STN[['salinity']] - stn[['salinity']], p, ylim=rev(range(p)))

[Package oce version 0.9-20 Index]