`R/calc_longterm_monthly_stats.R`

`calc_longterm_monthly_stats.Rd`

Calculates the long-term mean, median, maximum, minimum, and percentiles of annual monthly mean flow values for all months and all data (Long-term) from a daily streamflow data set. Calculates statistics from all values, unless specified. Returns a tibble with statistics.

```
calc_longterm_monthly_stats(
data,
dates = Date,
values = Value,
groups = STATION_NUMBER,
station_number,
percentiles = c(10, 90),
roll_days = 1,
roll_align = "right",
water_year_start = 1,
start_year,
end_year,
exclude_years,
months = 1:12,
complete_years = FALSE,
include_annual = TRUE,
custom_months,
custom_months_label,
transpose = FALSE,
ignore_missing = FALSE
)
```

- data
Data frame of daily data that contains columns of dates, flow values, and (optional) groups (e.g. station numbers). Leave blank or set to

`NULL`

if using`station_number`

argument.- dates
Name of column in

`data`

that contains dates formatted YYYY-MM-DD. Only required if dates column name is not 'Date' (default). Leave blank or set to`NULL`

if using`station_number`

argument.- values
Name of column in

`data`

that contains numeric flow values, in units of cubic metres per second. Only required if values column name is not 'Value' (default). Leave blank if using`station_number`

argument.- groups
Name of column in

`data`

that contains unique identifiers for different data sets, if applicable. Only required if groups column name is not 'STATION_NUMBER'. Function will automatically group by a column named 'STATION_NUMBER' if present. Remove the 'STATION_NUMBER' column beforehand to remove this grouping. Leave blank if using`station_number`

argument.- station_number
Character string vector of seven digit Water Survey of Canada station numbers (e.g.

`"08NM116"`

) of which to extract daily streamflow data from a HYDAT database. Requires`tidyhydat`

package and a HYDAT database. Leave blank if using`data`

argument.- percentiles
Numeric vector of percentiles to calculate. Set to

`NA`

if none required. Default`c(10,90)`

.- roll_days
Numeric value of the number of days to apply a rolling mean. Default

`1`

.- roll_align
Character string identifying the direction of the rolling mean from the specified date, either by the first (

`'left'`

), last (`'right'`

), or middle (`'center'`

) day of the rolling n-day group of observations. Default`'right'`

.- water_year_start
Numeric value indicating the month (

`1`

through`12`

) of the start of water year for analysis. Default`1`

.- start_year
Numeric value of the first year to consider for analysis. Leave blank or set well before start date (i.e.

`1800`

) to use from the first year of the source data.- end_year
Numeric value of the last year to consider for analysis. Leave blank or set well after end date (i.e.

`2100`

) to use up to the last year of the source data.- exclude_years
Numeric vector of years to exclude from analysis. Leave blank or set to

`NULL`

to include all years.- months
Numeric vector of months to include in analysis. For example,

`3`

for March,`6:8`

for Jun-Aug or`c(10:12,1)`

for first four months (Oct-Jan) when`water_year_start = 10`

(Oct). Default summarizes all months (`1:12`

).- complete_years
Logical values indicating whether to include only years with complete data in analysis. Default

`FALSE`

.- include_annual
Logical value indicating whether to include annual calculation of all months. Default

`TRUE`

.- custom_months
Numeric vector of months to combine to summarize (ex.

`6:8`

for Jun-Aug). Adds results to the end of table. If wanting months that overlap calendar years (ex. Oct-Mar), choose`water_year_start`

that begins before the first month listed. Leave blank for no custom month summary.- custom_months_label
Character string to label custom months. For example, if

`months = 7:9`

you may choose`"Summer"`

or`"Jul-Sep"`

. Default`"Custom-Months"`

.- transpose
Logical value indicating whether to transpose rows and columns of results. Default

`FALSE`

.- ignore_missing
Logical value indicating whether dates with missing values should be included in the calculation. If

`TRUE`

then a statistic will be calculated regardless of missing dates. If`FALSE`

then only those statistics from time periods with no missing dates will be returned. Default`FALSE`

.

A tibble data frame with the following columns:

- Month
month of the year, included 'Annual' for all months, and 'Custom-Months' if selected

- Mean
mean of all annual monthly means for a given month over all years

- Median
median of all annual monthly means for a given month over all years

- Maximum
maximum of all annual monthly means for a given month over all years

- Minimum
minimum of all annual monthly means for a given month over all years

- P'n'
each n-th percentile selected for annual monthly means for a given month over all years

Default percentile columns:

- P10
annual 10th percentile selected for annual monthly means for a given month over all years

- P90
annual 90th percentile selected for annual monthly means for a given month over all years

Transposing data creates a column of "Statistics" and subsequent columns for each year selected.

```
# Run if HYDAT database has been downloaded (using tidyhydat::download_hydat())
if (file.exists(tidyhydat::hy_downloaded_db())) {
# Calculate long-term monthly statistics using data argument with defaults
flow_data <- tidyhydat::hy_daily_flows(station_number = "08NM116")
calc_longterm_monthly_stats(data = flow_data,
start_year = 1980)
# Calculate long-term monthly statistics using station_number argument with defaults
calc_longterm_monthly_stats(station_number = "08NM116",
start_year = 1980)
# Calculate long-term monthly statistics regardless if there is missing data for a given year
calc_longterm_monthly_stats(station_number = "08NM116",
ignore_missing = TRUE)
# Calculate long-term monthly statistics and add custom stats for July-September
calc_longterm_monthly_stats(station_number = "08NM116",
start_year = 1980,
custom_months = 7:9,
custom_months_label = "Summer")
}
#> # A tibble: 14 × 8
#> STATION_NUMBER Month Mean Median Maximum Minimum P10 P90
#> <chr> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 08NM116 Jan 1.13 0.968 6.12 0.316 0.624 1.60
#> 2 08NM116 Feb 1.15 0.964 3.83 0.353 0.523 1.67
#> 3 08NM116 Mar 1.83 1.41 6.93 0.507 0.821 2.91
#> 4 08NM116 Apr 8.59 7.98 23.9 1.60 3.80 13.3
#> 5 08NM116 May 25.5 24.0 48.1 14.0 16.0 35.4
#> 6 08NM116 Jun 21.9 21.2 48.6 3.15 10.8 36.8
#> 7 08NM116 Jul 6.28 4.34 25.6 0.921 1.93 13.1
#> 8 08NM116 Aug 2.03 1.79 5.07 0.872 1.14 3.36
#> 9 08NM116 Sep 2.14 1.76 6.06 0.700 0.998 3.76
#> 10 08NM116 Oct 2.08 1.93 5.25 0.533 0.998 3.37
#> 11 08NM116 Nov 2.04 1.67 5.41 0.498 0.741 3.45
#> 12 08NM116 Dec 1.28 1.10 3.65 0.450 0.539 2.19
#> 13 08NM116 Annual 6.34 6.27 11.1 2.88 4.36 8.46
#> 14 08NM116 Summer 3.50 2.86 11.5 1.06 1.41 6.07
```