Add a column of basin areas to a daily streamflow data set, in units of square kilometres.

add_basin_area(data, groups = STATION_NUMBER, station_number, basin_area)

Arguments

data

Data frame of daily data that contains columns of dates, flow values, and (optional) groups (e.g. station numbers). 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.

basin_area

Upstream drainage basin area, in square kilometres, to apply to observations. Three options:

(1) Leave blank if groups is STATION_NUMBER with HYDAT station numbers to extract basin areas from HYDAT.

(2) A single numeric value to apply to all observations.

(3) List each basin area for each group/station in groups (can override HYDAT value if listed) as such c("08NM116" = 795, "08NM242" = 10). If group is not listed the HYDAT area will be applied if it exists, otherwise it will be NA.

Value

A tibble data frame of the original source data with an additional column:

Basin_Area_sqkm

area of upstream drainage basin area, in square kilometres

Examples

# Run if HYDAT database has been downloaded (using tidyhydat::download_hydat()) if (file.exists(tidyhydat::hy_downloaded_db())) { # Add the HYDAT basin area to a data frame with station numbers flow_data <- tidyhydat::hy_daily_flows(station_number = "08NM116") add_basin_area(data = flow_data) # Add the HYDAT basin area to data from HYDAT add_basin_area(station_number = "08NM116") # Set a custom basin area add_basin_area(station_number = "08NM116", basin_area = 800) # Set multiple custom basin areas for multiple stations add_basin_area(station_number = c("08NM116", "08NM242"), basin_area = c("08NM116" = 800, "08NM242" = 10)) }
#> # A tibble: 33,671 x 6 #> STATION_NUMBER Date Parameter Value Symbol Basin_Area_sqkm #> <chr> <date> <chr> <dbl> <chr> <dbl> #> 1 08NM116 1949-04-01 Flow 1.13 E 800 #> 2 08NM116 1949-04-02 Flow 1.53 E 800 #> 3 08NM116 1949-04-03 Flow 2.07 E 800 #> 4 08NM116 1949-04-04 Flow 2.07 E 800 #> 5 08NM116 1949-04-05 Flow 2.21 E 800 #> 6 08NM116 1949-04-06 Flow 2.21 NA 800 #> 7 08NM116 1949-04-07 Flow 2.27 NA 800 #> 8 08NM116 1949-04-08 Flow 2.35 NA 800 #> 9 08NM116 1949-04-09 Flow 2.78 NA 800 #> 10 08NM116 1949-04-10 Flow 2.94 NA 800 #> # ... with 33,661 more rows