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 or set to NULL 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: 35,528 × 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 35,518 more rows