R/clean_CarcassData.R

Defines functions clean_carcassData

Documented in clean_carcassData

#' @title Clean Carcass Data
#' @description Processes the raw CDMS carcass dataset and adds important fields for summaries (e.g., Survey Year, Reporting Group, Transect Name, Above Weir, Origin, Mark and Recapture etc.)
#' @param data raw CDMS carcass dataset from \code{cdmsR::getDatasetView(datastore = 79)} or from CDMS dataset export
#' @export
#' @import dplyr
#' @author Ryan N. Kinzer
#' @examples
#' car_dat <- cdmsR::getDatasetView(datastore = 79)
#' clean_carcassData(car_dat)
clean_carcassData <- function(data){
  {if(is.null(data))stop("carcass data must be supplied")}

  dat <- data %>%
    mutate(TransectName = str_split(LocationLabel, 'Transect - ', simplify = TRUE)[,2]) %>%
    left_join(transect_meta, by = c('Species', 'Run', 'StreamName', 'TransectName')) %>%
    mutate(SurveyDate = lubridate::date(lubridate::ymd_hms(SurveyDate)),
           SurveyYear = lubridate::year(SurveyDate),
           ForkLength = ifelse(ForkLength == -99, NA, ForkLength)) %>%
    mutate(Count = ifelse(is.na(Count) & !is.na(SampleNumber), 1,
                          ifelse(is.na(Count), 0, Count)))

  dat <- dat %>%
    mutate(Origin = case_when(AdiposeFinClipped == 'Yes' ~ 'Hatchery',
                              CWTScanned == 'Yes' ~ 'Hatchery',
                              grepl('RE|LE|Yes', TagsVIE) ~ 'Hatchery',
                              grepl('LV|RV', MarksVentralFin) ~ 'Hatchery',

                              AdiposeFinClipped == 'Unknown' ~ 'Unknown',
                              CWTScanned == 'Unknown' ~ 'Unknown',
                              TagsVIE == 'Unknown' ~ 'Unknown',
                              MarksVentralFin == 'Unknown' ~ 'Unknown',

                              grepl('No|NA', AdiposeFinClipped) &
                              grepl('No|NA', CWTScanned) &
                              !grepl('RE|LE|Yes|Unknown', TagsVIE) &
                              !grepl('LV|RV|Unknown', MarksVentralFin) ~ 'Natural',

                              TRUE ~ NA_character_)
            )

  dat <- dat %>%
    mutate(OpercleLeft = ifelse(OpercleLeft == 'LOPN', 'LON', OpercleLeft)) %>%
    mutate(OpercleRight = ifelse(OpercleRight == 'ROPN', 'RON', OpercleRight)) %>%
    mutate(Mark_Discernible = case_when(AboveWeir == 'Yes' & grepl('LOP|No', OpercleLeft) ~ TRUE,
                                        #AboveWeir == 'Yes' & grepl('ROP|No', OpercleRight) ~ TRUE, # Source of potential problem for JCAPE - includes fish when opercle right is possible, when only we need to look at opercle left.
                                        AboveWeir == 'Yes' & grepl('OP|Lost|No', TagsPetersonDisk) ~ TRUE,
                                        AboveWeir == 'Yes' & str_detect(TagsPetersonDisk, '\\d') ~ TRUE,
                                        AboveWeir == 'Yes' & grepl('OP|Lost|Yes|No', TagsStaple) ~ TRUE,
                                   TRUE ~ FALSE)) %>%
    mutate(Mark_Discernible = case_when(Mark_Discernible & TagsPetersonDisk == 'Unknown' ~ FALSE,
                                        #Mark_Discernible & TagsStaple == 'Unknown' ~ FALSE,  # DN and RK decided to remove
                                        TRUE ~ Mark_Discernible)) %>%
    mutate(Recapture = case_when(AboveWeir == 'Yes' & grepl('LOP', OpercleLeft) ~ TRUE,
                                 AboveWeir == 'Yes' & grepl('ROP', OpercleRight) ~ TRUE,
                                 AboveWeir == 'Yes' & grepl('OP|Lost', TagsPetersonDisk) ~ TRUE,
                                 AboveWeir == 'Yes' & str_detect(TagsPetersonDisk, '\\d') ~ TRUE,
                                 AboveWeir == 'Yes' & grepl('OP|Lost|Yes', TagsStaple) ~ TRUE,
                                TRUE ~ FALSE)) %>%
    mutate(MR_strata = NA) %>%
    select(ESU_DPS:Run, ReportingGroup, StreamName, TribToName, LocationLabel, TransectName, SurveyYear, everything())

  return(dat)

  }
ryankinzer/cuyem documentation built on April 20, 2024, 2:10 p.m.