Skip to contents

The aim of this vignette is to show the calculation of all statistical indicators only related to flow data (indicator evolving precipitation and comparison between observed and simulated flows are excluded).

library(CARD)
#> Loading required package: EXstat
library(airGRdatasets)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

Dataset

We use flow time series of three random gauging stations provided by the package airGRdatasets (See vignette V01-climatic_indicators for more details).

# Get all data sets in the package
station_ids <- ls("package:airGRdatasets")
# Sample 3 stations
sel_ids <- sample(station_ids, size = 3)
sel_ids
#> [1] "K265401001" "K134181001" "E645651001"
# "Tidy format" the time series
df_ts <- dplyr::bind_rows(
  lapply(sel_ids,
  function(id){
    df <- base::get(id)$TS
    df$id <- id
    return(df)
  })
)
df_ts$Date <- as.Date(df_ts$Date) # Convert to date format
str(df_ts)
#> 'data.frame':    21915 obs. of  7 variables:
#>  $ Date: Date, format: "1999-01-01" "1999-01-02" ...
#>  $ Ptot: num  0.2 18.9 22.5 0.5 0 0 1.8 16.6 3.4 11.8 ...
#>  $ Temp: num  3.8 3.1 4.2 6.1 8.5 8.3 6.1 3 -0.6 -4 ...
#>  $ Evap: num  0.4 0.3 0.4 0.5 0.6 0.6 0.5 0.3 0.2 0 ...
#>  $ Qls : int  3120 3150 5380 6440 5330 4990 4640 5190 5460 4810 ...
#>  $ Qmmd: num  1.25 1.26 2.15 2.57 2.13 ...
#>  $ id  : chr  "K265401001" "K265401001" "K265401001" "K265401001" ...

Selection of hydrological indicators

We use the function CARD_list_all() to get the complete list of available indicators.

metaEX_all = CARD_list_all()
str(metaEX_all)
#> tibble [563 × 23] (S3: tbl_df/tbl/data.frame)
#>  $ CARD_name                : chr [1:563] "ETPA" "BFI-Wal" "BFM" "delta{centerBF}_H1" ...
#>  $ variable_en              : chr [1:563] "ETPA" "BFI-Wal" "BFM" "delta{centerBF}_H1" ...
#>  $ unit_en                  : chr [1:563] "mm" "without unit" "without unit" "day" ...
#>  $ name_en                  : chr [1:563] "Cumulative annual evapotranspiration" "Baseflow index" "Baseflow magnitude" "Average change of the center of low flows between the near horizon and historical period" ...
#>  $ description_en           : chr [1:563] "" "Ratio between mean inter-annual base flow and mean inter-annual flow" "" "Date when 50 % of the annual cumulative baseflow is reached" ...
#>  $ method_en                : chr [1:563] "" "1. no temporal aggregation - extraction of the base flow (Wallingford)\n2. no temporal aggregation - calculatio"| __truncated__ "1. no temporal aggregation - extraction of the base flow (Wallingford)\n2. aggregation by day of the year - ave"| __truncated__ "1. annual aggregation [09-01, 08-31] - date when the baseflow (Wallingford) sum corresponds to 50 % of the tota"| __truncated__ ...
#>  $ sampling_period_en       : chr [1:563] "09-01, 08-31" NA NA "09-01, 08-31" ...
#>  $ topic_en                 : chr [1:563] "Evapotranspiration, Average, Intensity" "Flow, Base Flow, Intensity" "Flow, Base Flow, Intensity" "Flow, Baseflow, Seasonality" ...
#>  $ variable_fr              : chr [1:563] "ETPA" "BFI-Wal" "BFM" "delta{centreQB}_H1" ...
#>  $ unit_fr                  : chr [1:563] "mm" "sans unité" "sans unité" "jour" ...
#>  $ name_fr                  : chr [1:563] "Cumul des évapotranspirations annuelles" "Indice de débit de base" "Magnitude du débit de base" "Changement moyen du centre des écoulements lents entre l'horizon proche et la période historique" ...
#>  $ description_fr           : chr [1:563] "" "Rapport entre débit de base moyen inter-annuel et débit moyen inter-annuel" "" "Date à laquelle 50 % du cumul annuel du débit de base sont atteints" ...
#>  $ method_fr                : chr [1:563] "" "1. aucune agrégation temporelle - extraction du débit de base (Wallingford)\n2. aucune agrégation temporelle - calcul du BFI" "1. aucune agrégation temporelle - extraction du débit de base (Wallingford)\n2. agrégation par jour de l’année "| __truncated__ "1. agrégation annuelle [01-09, 31-08] - date à laquelle la somme du débit de base (Wallingford) correspond à 50"| __truncated__ ...
#>  $ sampling_period_fr       : chr [1:563] "01-09, 31-08" NA NA "01-09, 31-08" ...
#>  $ topic_fr                 : chr [1:563] "Évapotranspiration, Moyenne, Intensité" "Débit, Débit de Base, Intensité" "Débit, Débit de Base, Intensité" "Débit, Débit de Base, Saisonnalité" ...
#>  $ is_experimental          : logi [1:563] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ input_vars               : chr [1:563] "ETP" "Q" "Q" "Q" ...
#>  $ source                   : chr [1:563] NA "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ ...
#>  $ preferred_sampling_period: chr [1:563] NA NA NA "09-01" ...
#>  $ is_date                  : logi [1:563] FALSE FALSE FALSE TRUE TRUE TRUE ...
#>  $ to_normalise             : logi [1:563] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ palette                  : chr [1:563] "#452C1A #7F4A23 #B3762A #D4B86A #EFE0B0 #BCE6DB #7ACEB9 #449C93 #2A6863 #193830" NA NA "#60265e #893687 #c05fbe #dba3da #edd1ec #f6ddd3 #edbaa7 #e08765 #CD5629 #8f3c1d" ...
#>  $ script_path              : chr [1:563] "Evapotranspiration/ETPA.R" "Flow/Baseflow/criteria/BFI-Wal.R" "Flow/Baseflow/criteria/BFM.R" "Flow/Baseflow/criteria/delta{centerBF}_H.R" ...

On which we can filter criteria on flows excluding indicators related to:

  • performance of hydrological model
  • indicators computed for future horizon periods
  • sensitivity to climate variability
  • indicators invoking the currently bugged function GeneralMannKendall_WRAP
  • the indicator med{dtRec} that is currently crashing
metaEX_flow <- metaEX_all %>%
  filter(grepl("Flow", topic_en),
         !grepl("Performance", topic_en),
         !grepl("_H[0-3]*$" , variable_en),
         !grepl("Sensitivity_to_Climate_Variability", script_path),
         # 'GeneralMannKendall_WRAP' is not an exported object from 'namespace:EXstat'
         !grepl("alpha" , variable_en),
         # Error in `dplyr::arrange()`: In argument: `..1 = get(date_col)`
         variable_en != "med{dtRec}")
knitr::kable(metaEX_flow %>% select("variable_en", name_en))
variable_en name_en
BFI-Wal Baseflow index
BFM Baseflow magnitude
med{centerBF} Median center of baseflow
med{dtBF} Median duration of baseflow
med{endBF} Median of the end of base flows
med{startBF} Median start of baseflow
med{vBF} Median of the annual volume generated by base flow
BF-LH Base flow (Lyne and Hollick)
centerBF Center of low flows
dtBF Duration of low flows
endBF End of Base Flow
startBF Start of low flows
vBF Annual volume generated by the baseflow
med{dtFlood} Median duration of floods
med{tQJXA} Median of dates of the annual maximum daily discharge
Q10 Flow exceeded 1 year in 10
QJXA-10 Annual maximum daily flow with a 10-year return period
dtFlood Duration of floods
fQ01A Annual frequency of exceeding Q01
fQ05A Annual frequency of exceeding Q05
fQ10A Annual frequency of exceeding Q10
Q01A Annual flow exceeded 1 year in 100
Q05A Annual flow exceeded 1 year in 20
Q10A Annual flow exceeded 1 year in 10
QJXA Annual maximum daily flow
tQJXA Date of the annual maximum daily discharge
tVCX10 Date of the annual maximum of the 10-day mean of daily flow
tVCX3 Date of the annual maximum of the 3-day mean of daily flow
VCX10 Annual Maximum of the 10-day Moving Average of Daily Flows
VCX3 Annual Maximum of the 3-day Moving Average of Daily Flows
startLF_summer Start of summer low flows
centerLF_summer Center of summer low flows
endLF_summer End of summer low flows
dtLF_summer Duration of summer low flows
vLF_summer Volume deficit of summer low flows
QMNA_summer Summer minimum of monthly flows
QNA_summer Summer minimum of daily discharge
tVCN10_summer Date of the summer minimum of 10-day mean flows
VCN10_summer Summer minimum of 10-day mean daily discharge
VCN3_summer Summer minimum of 3-day mean daily discharge
VCN30_summer Summer minimum of 30-day mean daily discharge
startLF_winter Start of winter low flows
centerLF_winter Center of winter low flows
endLF_winter End of winter low flows
dtLF_winter Duration of winter low flows
vLF_winter Volume deficit of winter low flows
QMNA_winter Winter minimum of monthly flows
QNA_winter Winter minimum of daily discharge
tVCN10_winter Date of the winter minimum of 10-day mean flows
VCN10_winter Winter minimum of 10-day mean daily discharge
VCN3_winter Winter minimum of 3-day mean daily discharge
VCN30_winter Winter minimum of 30-day mean daily discharge
med{startLF} Median of the start of low flows
med{centerLF} Median of the center of low flows
med{endLF} Median of the end of low flows
med{dtLF} Median of the duration of low flows
med{vLF} Median of the volume deficit of low flows
med{tVCN10} Median of dates of the annual minimum of 10-day mean flows
Q90 Flow exceeded 9 years out of 10
QMNA-5 Annual minimum of monthly flows with a return period of 5 years
VCN10-5 Annual minimum of 10-day mean daily discharge with a return period of 5 years
VCN30-2 Annual minimum of 30-day mean daily discharge with a return period of 2 years
Q90A Annual flow exceeded 9 years out of 10
Q95A Annual flow exceeded 19 years out of 20
Q99A Annual flow exceeded 99 years out of 100
QMNA Annual minimum of monthly flows
QNA Annual minimum of daily discharge
tVCN10 Date of the annual minimum of 10-day mean flows
VCN10 Annual minimum of 10-day mean daily discharge
VCN3 Annual minimum of 3-day mean daily discharge
VCN30 Annual minimum of 30-day mean daily discharge
aFDC Slope of the segment between the 33% and 66% quantiles of the flow duration curve
meanQA Average of annual average daily flow
Q50 Flow median
FDC Flow duration curve
medQJ Median inter-annual flow
medQJC5 5-day centered moving average of the inter-annual median flow
Q25A Third quartile of annual flows
Q50A Median of annual flows
Q75A First quartile of annual flows
QA Annual mean daily discharge
QJC10 Mean monthly discharge averaged over 10 days
QM Mean monthly discharge
QMA_jan Average daily discharge for each January
QMA_feb Average daily discharge for each February
QMA_mar Average daily discharge for each March
QMA_apr Average daily discharge for each April
QMA_may Average daily discharge for each May
QMA_jun Average daily discharge for each June
QMA_jul Average daily discharge for each July
QMA_aug Average daily discharge for each August
QMA_sep Average daily discharge for each September
QMA_oct Average daily discharge for each October
QMA_nov Average daily discharge for each November
QMA_dec Average daily discharge for each December
QSA_JJASO Seasonal annual mean daily discharge
QSA_DJF Average daily flows for each winter
QSA_MAM Average daily flows for each spring
QSA_JJA Average daily flows for each summer
QSA_SON Average daily flows for each autumn

Finally, we format the data and run the function CARD_extraction().

df_flow <- df_ts %>%
  select("Date", "id", "Qls") %>%
  rename(Q = "Qls") %>%
  mutate(Q = Q / 1000) # Convert to m3/s
str(df_flow)
#> 'data.frame':    21915 obs. of  3 variables:
#>  $ Date: Date, format: "1999-01-01" "1999-01-02" ...
#>  $ id  : chr  "K265401001" "K265401001" "K265401001" "K265401001" ...
#>  $ Q   : num  3.12 3.15 5.38 6.44 5.33 4.99 4.64 5.19 5.46 4.81 ...
res_flow <- CARD_extraction(
  df_flow,
  CARD_name = metaEX_flow$variable_en
)
#> Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
#> dplyr 1.1.0.
#>  Please use `reframe()` instead.
#>  When switching from `summarise()` to `reframe()`, remember that `reframe()`
#>   always returns an ungrouped data frame and adjust accordingly.
#>  The deprecated feature was likely used in the EXstat package.
#>   Please report the issue to the authors.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> Warning in process_extraction(data = data, funct = funct, funct_args =
#> funct_args, : 'keep' is coherced to NULL. 'keep' can be non NULL only if
#> 'time_step' is not 'month', 'season' or 'yearday'.
#> Warning: There were 1098 warnings in `dplyr::summarise()`.
#> The first warning was:
#>  In argument: `ValueEX1 = f("Q_obs", na.rm = TRUE)`.
#>  In group 1: `Code = "E645651001"` `group = 1`.
#> Caused by warning in `mean.default()`:
#> ! argument is not numeric or logical: returning NA
#>  Run `dplyr::last_dplyr_warnings()` to see the 1097 remaining warnings.
#> 'keep' seems to only select aggragated column. Thus, 'keep' will be coherced to NULL.
str(res_flow)
#> List of 2
#>  $ metaEX: tibble [72 × 22] (S3: tbl_df/tbl/data.frame)
#>   ..$ variable_en              : chr [1:72] "BFI-Wal" "BFM" "med{centerBF}" "med{dtBF}" ...
#>   ..$ unit_en                  : chr [1:72] "without unit" "without unit" "yearday" "day" ...
#>   ..$ name_en                  : chr [1:72] "Baseflow index" "Baseflow magnitude" "Median center of baseflow" "Median duration of baseflow" ...
#>   ..$ description_en           : chr [1:72] "Ratio between mean inter-annual base flow and mean inter-annual flow" "" "Median of the dates at which 50 % of the annual cumulative baseflow is reached" "Median of the durations between the start and end of baseflow" ...
#>   ..$ method_en                : chr [1:72] "1. no temporal aggregation - extraction of the base flow (Wallingford)\n2. no temporal aggregation - calculatio"| __truncated__ "1. no temporal aggregation - extraction of the base flow (Wallingford)\n2. aggregation by day of the year - ave"| __truncated__ "1. annual aggregation [09-01, 08-31] - date at which the baseflow (Wallingford) sum Qb (Section 8.6.2) correspo"| __truncated__ "1. annual aggregation [09-01, 08-31] - number of days between the dates at which the baseflow (Wallingford) sum"| __truncated__ ...
#>   ..$ topic_en                 : chr [1:72] "Flow, Base Flow, Intensity" "Flow, Base Flow, Intensity" "Flow, Baseflow, Seasonality" "Flow, Baseflow, Duration" ...
#>   ..$ variable_fr              : chr [1:72] "BFI-Wal" "BFM" "med{centreQB}" "med{dtQB}" ...
#>   ..$ unit_fr                  : chr [1:72] "sans unité" "sans unité" "jour de l'année" "jour" ...
#>   ..$ name_fr                  : chr [1:72] "Indice de débit de base" "Magnitude du débit de base" "Médiane du centre des écoulements lents" "Médiane de la durée des écoulements lents" ...
#>   ..$ description_fr           : chr [1:72] "Rapport entre débit de base moyen inter-annuel et débit moyen inter-annuel" "" "Médiane des dates à laquelle 50 % du cumul annuel du débit de base sont atteints" "Médiane des durées entre le début et la fin des écoulements lents" ...
#>   ..$ method_fr                : chr [1:72] "1. aucune agrégation temporelle - extraction du débit de base (Wallingford)\n2. aucune agrégation temporelle - calcul du BFI" "1. aucune agrégation temporelle - extraction du débit de base (Wallingford)\n2. agrégation par jour de l’année "| __truncated__ "1. agrégation annuelle [01-09, 31-08] - date à laquelle la somme du débit de base (Wallingford) Qb (Section 8.6"| __truncated__ "1. agrégation annuelle [01-09, 31-08] - nombre de jours entre les dates auxquelles la somme du débit de base (W"| __truncated__ ...
#>   ..$ topic_fr                 : chr [1:72] "Débit, Débit de Base, Intensité" "Débit, Débit de Base, Intensité" "Débit, Débit de Base, Saisonnalité" "Débit, Débit de Base, Durée" ...
#>   ..$ is_experimental          : logi [1:72] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>   ..$ input_vars               : chr [1:72] "Q" "Q" "Q" "Q" ...
#>   ..$ source                   : chr [1:72] "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ "TALLAKSEN, L. et H. VAN LANEN, éd. (2004). Hydrological drought. Processes and estimation methods for streamflo"| __truncated__ ...
#>   ..$ preferred_sampling_period: chr [1:72] NA NA "09-01" "09-01" ...
#>   ..$ is_date                  : logi [1:72] FALSE FALSE TRUE FALSE TRUE TRUE ...
#>   ..$ to_normalise             : logi [1:72] FALSE FALSE FALSE TRUE FALSE FALSE ...
#>   ..$ script_path              : chr [1:72] "Flow/Baseflow/criteria/BFI-Wal.R" "Flow/Baseflow/criteria/BFM.R" "Flow/Baseflow/criteria/med{centerBF}.R" "Flow/Baseflow/criteria/med{dtBF}.R" ...
#>   ..$ sampling_period_en       : chr [1:72] NA NA "09-01, 08-31" "09-01, 08-31" ...
#>   ..$ sampling_period_fr       : chr [1:72] NA NA "01-09, 31-08" "01-09, 31-08" ...
#>   ..$ palette                  : chr [1:72] NA NA NA NA ...
#>  $ dataEX:List of 72
#>   ..$ BFI-Wal      : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ BFI-Wal: num [1:3] 0.974 0.511 0.693
#>   ..$ BFM          : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ BFM: num [1:3] 0.146 0.937 0.8
#>   ..$ med{centerBF}: tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id           : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{centerBF}: num [1:3] 68 40 62
#>   ..$ med{dtBF}    : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id       : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{dtBF}: num [1:3] 284 164 206
#>   ..$ med{endBF}   : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id        : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{endBF}: num [1:3] 201 133 164
#>   ..$ med{startBF} : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{startBF}: num [1:3] 282 325 320
#>   ..$ med{vBF}     : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id      : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{vBF}: num [1:3] 62.3 388.5 88.7
#>   ..$ BF-LH        : tibble [21,915 × 4] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:21915] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:21915], format: "1999-01-01" "1999-01-02" ...
#>   .. ..$ Q    : num [1:21915] 1.75 1.79 1.84 1.89 1.92 1.86 1.99 1.98 1.93 1.88 ...
#>   .. ..$ BF-LH: num [1:21915] 1.75 1.75 1.75 1.75 1.75 ...
#>   ..$ centerBF     : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id      : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date    : Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ centerBF: num [1:63] NA NA 94 75 62 NA NA NA 75 NA ...
#>   ..$ dtBF         : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ dtBF: num [1:63] NA NA 269 284 279 NA NA NA 290 NA ...
#>   ..$ endBF        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ endBF: num [1:63] NA NA 203 197 197 NA NA NA 206 NA ...
#>   ..$ startBF      : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date   : Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ startBF: num [1:63] NA NA 301 279 284 NA NA NA 282 NA ...
#>   ..$ vBF          : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ vBF : num [1:63] NA 71.5 108.7 91.9 77.3 ...
#>   ..$ med{dtFlood} : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{dtFlood}: num [1:3] 2 3 4
#>   ..$ med{tQJXA}   : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id        : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{tQJXA}: num [1:3] 44.3 36.4 41.3
#>   ..$ Q10          : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ Q10: num [1:3] 2.74 66.96 8.47
#>   ..$ QJXA-10      : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ QJXA-10: num [1:3] 5.54 344.96 46.72
#>   ..$ dtFlood      : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date   : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ dtFlood: int [1:63] NA 2 2 1 1 NA NA NA NA 2 ...
#>   ..$ fQ01A        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ fQ01A: num [1:63] NA 0.00273 0.17808 0.00548 0 ...
#>   ..$ fQ05A        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ fQ05A: num [1:63] NA 0.00546 0.58082 0.32055 0.0137 ...
#>   ..$ fQ10A        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ fQ10A: num [1:63] NA 0.148 0.822 0.466 0.359 ...
#>   ..$ Q01A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q01A: num [1:60] NA 3.03 5.91 4.15 3.22 ...
#>   ..$ Q05A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q05A: num [1:60] NA 2.89 5.32 4.02 3.04 ...
#>   ..$ Q10A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q10A: num [1:60] NA 2.85 5.14 3.87 2.98 ...
#>   ..$ QJXA         : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ QJXA: num [1:63] NA 5.4 6.2 5.25 3.9 NA NA NA NA 3.02 ...
#>   ..$ tQJXA        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ tQJXA: num [1:63] NA -6 98 78 1 NA NA NA NA 220 ...
#>   ..$ tVCX10       : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id    : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date  : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ tVCX10: num [1:63] NA -3 118 107 62 NA NA NA NA NA ...
#>   ..$ tVCX3        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ tVCX3: num [1:63] NA -5 117 79 2 NA NA NA NA 220 ...
#>   ..$ VCX10        : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ VCX10: num [1:63] NA 3.05 5.55 4.05 3.1 ...
#>   ..$ VCX3         : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:63], format: "1998-10-01" "1999-10-01" ...
#>   .. ..$ VCX3: num [1:63] NA 4.11 5.82 4.66 3.37 ...
#>   ..$ QMNA_summer  : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id         : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date       : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ QMNA_summer: num [1:60] NA 2.17 2.64 2.03 1.69 ...
#>   ..$ QNA_summer   : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id        : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date      : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ QNA_summer: num [1:60] NA 2.08 2.46 1.92 1.61 1.1 NA 1.44 NA 1.82 ...
#>   ..$ tVCN10_summer: tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id           : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date         : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ tVCN10_summer: num [1:60] NA 252 326 299 313 304 NA 308 NA 267 ...
#>   ..$ VCN10_summer : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date        : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ VCN10_summer: num [1:60] NA 2.1 2.52 2.01 1.65 ...
#>   ..$ VCN3_summer  : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id         : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date       : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ VCN3_summer: num [1:60] NA 2.09 2.49 1.94 1.62 ...
#>   ..$ VCN30_summer : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date        : Date[1:60], format: "1999-05-01" "2000-05-01" ...
#>   .. ..$ VCN30_summer: num [1:60] NA 2.15 2.6 2.02 1.66 ...
#>   ..$ QMNA_winter  : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id         : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date       : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ QMNA_winter: num [1:63] NA 1.87 2.49 2.46 2.26 ...
#>   ..$ QNA_winter   : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id        : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date      : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ QNA_winter: num [1:63] NA 1.72 2.31 2.3 1.94 NA NA NA 1.44 1.51 ...
#>   ..$ tVCN10_winter: tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id           : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date         : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ tVCN10_winter: num [1:63] NA 336 305 377 304 NA NA NA 308 317 ...
#>   ..$ VCN10_winter : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date        : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ VCN10_winter: num [1:63] NA 1.77 2.34 2.35 2.12 ...
#>   ..$ VCN3_winter  : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id         : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date       : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ VCN3_winter: num [1:63] NA 1.73 2.32 2.31 2.06 ...
#>   ..$ VCN30_winter : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date        : Date[1:63], format: "1998-11-01" "1999-11-01" ...
#>   .. ..$ VCN30_winter: num [1:63] NA 1.84 2.38 2.38 2.19 ...
#>   ..$ med{dtLF}    : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id       : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{dtLF}: num [1:3] 279 71 84
#>   ..$ med{startLF} : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id          : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{startLF}: num [1:3] 91 201 195
#>   ..$ med{tVCN10}  : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id         : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{tVCN10}: num [1:3] 304 247 244
#>   ..$ med{vLF}     : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id      : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ med{vLF}: num [1:3] 42.34 15.06 9.11
#>   ..$ Q90          : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ Q90: num [1:3] 1.42 1.91 1.03
#>   ..$ QMNA-5       : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id    : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ QMNA-5: num [1:3] 1.459 1.33 0.939
#>   ..$ VCN10-5      : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ VCN10-5: num [1:3] 1.407 0.893 0.754
#>   ..$ VCN30-2      : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ VCN30-2: num [1:3] 1.69 2 1.06
#>   ..$ Q90A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q90A: num [1:60] NA 2.21 2.55 2.09 1.64 ...
#>   ..$ Q95A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q95A: num [1:60] NA 2.15 2.5 2.02 1.62 ...
#>   ..$ Q99A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q99A: num [1:60] NA 2.09 2.38 1.96 1.55 ...
#>   ..$ QMNA         : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ QMNA: num [1:62] NA NA 2.17 2.46 2.03 ...
#>   ..$ QNA          : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ QNA : num [1:62] NA NA 2.08 2.3 1.92 NA NA NA 1.44 NA ...
#>   ..$ tVCN10       : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id    : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date  : Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ tVCN10: num [1:62] NA NA 252 377 299 NA NA NA 308 NA ...
#>   ..$ VCN10        : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ VCN10: num [1:62] NA NA 2.1 2.35 2.01 ...
#>   ..$ VCN3         : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ VCN3: num [1:62] NA NA 2.09 2.31 1.94 ...
#>   ..$ VCN30        : tibble [62 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:62] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:62], format: "1998-04-01" "1999-04-01" ...
#>   .. ..$ VCN30: num [1:62] NA NA 2.15 2.38 2.02 ...
#>   ..$ aFDC         : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ aFDC: num [1:3] -0.325 -1.699 -1.109
#>   ..$ meanQA       : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id    : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ meanQA: num [1:3] 2.15 25.95 4.23
#>   ..$ Q50          : tibble [3 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id : chr [1:3] "E645651001" "K134181001" "K265401001"
#>   .. ..$ Q50: num [1:3] 1.89 12 2.91
#>   ..$ FDC          : tibble [3,000 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:3000] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ FDC_p: num [1:3000] 0.00135 0.00138 0.0014 0.00143 0.00146 ...
#>   .. ..$ FDC_Q: num [1:3000] 5.52 5.52 5.52 5.51 5.51 ...
#>   ..$ medQJ        : tibble [1,095 × 4] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:1095] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date   : Date[1:1095], format: "1999-01-01" "1999-01-02" ...
#>   .. ..$ Yearday: num [1:1095] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ medQJ  : num [1:1095] 1.75 1.78 1.84 1.84 1.92 ...
#>   ..$ medQJC5      : tibble [1,095 × 5] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id     : chr [1:1095] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date   : Date[1:1095], format: "1999-01-01" "1999-01-02" ...
#>   .. ..$ Yearday: num [1:1095] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ medQJ  : num [1:1095] 1.75 1.78 1.84 1.84 1.92 ...
#>   .. ..$ medQJC5: num [1:1095] 1.77 1.79 1.83 1.85 1.89 ...
#>   ..$ Q25A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q25A: num [1:60] NA 2.71 4.44 3.42 2.9 ...
#>   ..$ Q50A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q50A: num [1:60] NA 2.49 3.42 2.54 2.32 ...
#>   ..$ Q75A         : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:60], format: "1999-01-01" "2000-01-01" ...
#>   .. ..$ Q75A: num [1:60] NA 2.32 2.84 2.28 1.79 NA NA NA NA 1.91 ...
#>   ..$ QA           : tibble [63 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id  : chr [1:63] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date: Date[1:63], format: "1998-09-01" "1999-09-01" ...
#>   .. ..$ QA  : num [1:63] NA 2.35 3.55 2.99 2.5 ...
#>   ..$ QJC10        : tibble [1,095 × 2] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:1095] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ QJC10: num [1:1095] NA NA NA NA NA NA NA NA NA NA ...
#>   ..$ QM           : tibble [36 × 4] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id   : chr [1:36] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date : Date[1:36], format: "1999-01-01" "1999-02-01" ...
#>   .. ..$ Month: num [1:36] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ QM   : num [1:36] NA NA NA 2.37 2.31 ...
#>   ..$ QSA_JJASO    : tibble [60 × 3] (S3: tbl_df/tbl/data.frame)
#>   .. ..$ id       : chr [1:60] "E645651001" "E645651001" "E645651001" "E645651001" ...
#>   .. ..$ Date     : Date[1:60], format: "1999-06-01" "2000-06-01" ...
#>   .. ..$ QSA_JJASO: num [1:60] NA 2.38 3.41 2.5 2.03 ...