data/gridded/stock_list.R

library(dplyr)
library(readr)
library(tidyr)

## stock strata list from Jessica Blaylock
sdat <- readr::read_csv(here::here("data-raw/stocks-strata_10042018.csv"),
                 col_types = cols(
                   group = col_character(),
                   SVSPP = col_double(),
                   Species = col_character(),
                   Stock = col_character(),
                   `Season(s)` = col_character(),
                   `Strata set` = col_character()
                 ))

sdat_clean <- sdat %>%
  dplyr::select(svspp = SVSPP, species = Species, stock = Stock, season = `Season(s)`, strata_set = `Strata set`) %>%
  na.omit() %>%
  separate_rows(strata_set, sep = ";") %>%
  mutate(season = tolower(season),
         strat = case_when(grepl("offshore", tolower(strata_set)) ~ "1",
                           grepl("inshore", tolower(strata_set))~ "3",
                           TRUE ~ NA_character_),
         strata_set = gsub("[[:alpha:]]", "", strata_set)) %>%
  separate_rows(strata_set, sep = ",") %>%
  separate(strata_set, sep = "-", c("low", "hi"), remove = FALSE) %>%
  mutate(low = gsub("/s", "", low),
         hi = gsub("/s", "", hi),
         hi = ifelse(is.na(hi),
                     low,
                     hi),
         index = 1:n(),
         range = purrr::map(index, function(x) low[x]:hi[x])) %>%
  unnest(range) %>%
  mutate(strata = sprintf("%s%02d0", strat, range))


sdat_names <- sdat_clean %>%
  separate(species, sep = "\\s+(?=[[:upper:]])", c("common_name", "sci_name")) %>%
  mutate(common_name = tolower(common_name)) %>%
  tidyr::extract(common_name, into = c('partA', 'partB'), '(.*)\\s+([^ ]+)$', remove = FALSE) %>%
  dplyr::mutate(partA = substr(partA, start = 1, stop = 3),
                partB = substr(partB, start = 1, stop = 3),
                partC = ifelse(is.na(partA) | is.na(partB),
                               substr(common_name, start = 1, stop = 6),
                               paste0(partA, partB)),
                species_code = stringr::str_pad(partC, 6, pad = "z", side = "right"),
                species_code = species_code,
                cc_name = gsub(" ", "-", common_name),
                stock = tolower(stock),
                stock = gsub("/", "-", stock),
                stock_name = case_when(stock == "unit" ~ cc_name,
                                       stock != "unit" ~ sprintf("%s_%s", 
                                                                 cc_name, 
                                                                 stock))) %>%
  dplyr::select(common_name, sci_name, cc_name, stock_name, species_code, svspp, stock) %>%
  distinct(.keep_all = TRUE)


stock_list <- sdat_clean %>%
  mutate(season = case_when(grepl("spring,\\sfall", season) ~ "both",
                            season == "spring" ~ "spring",
                            season == "fall" ~ "fall",
                            TRUE ~ NA_character_),
         stock = tolower(stock),
         stock = gsub("/", "-", stock)) %>%
  distinct(.keep_all = TRUE) %>%
  left_join(sdat_names, by = c("svspp", "stock")) %>%
  dplyr::select(common_name, sci_name, cc_name, stock_name, species_code, svspp, season, strata) %>%
  dplyr::rename(stock_season = season)

#Adding menhaden strata
menhaden <- read.csv(here::here("data-raw/menhaden_strata_raw.csv"), stringsAsFactors = F) %>% 
  dplyr::filter(sp == "atlmen") %>% 
  dplyr::mutate(common_name = "atlantic menhaden",
                sci_name = "Brevoortia tyrannus",
                cc_name = "atlantic-menhaden",
                strata = as.character(strata)) %>% 
  # dplyr::mutate(stock_name = paste(cc_name, stock_area, sep = "_")) %>% 
  tidyr::unite(.,"stock_name", cc_name,stock_area, sep = "_") %>% 
  dplyr::mutate(stock_name = stringr::str_remove(stock_name, "_unit"),
                svspp = 36,
                cc_name = "atlantic-menhaden") %>% 
  dplyr::rename(species_code = sp,
                stock_season = season)

stock_list %<>% bind_rows(menhaden)

write.csv(here::here("data/stock_data/stock_list.csv"), x = stock_list, row.names = FALSE)
NOAA-EDAB/ECSA documentation built on Oct. 24, 2020, 2:21 p.m.