R/recentMoverDates.R

Defines functions recentMoverDates

recentMoverDates <- function(period_type = "quarter", 
                             period_selected_day = NULL){
  
  # Period type will month or quarter. 
  # In the future day, week, and year could be selected as well but seems to be less needed
  period_type <- "quarter"
  if(is.null(period_selected_day)){
    period_selected_day <- today()
  }
  
  period_selected_year <- year(period_selected_day)
  
  if(period_type == "month"){
    period_step <- 1/12
    time_period_label <- NULL
  } else if(period_type == "quarter"){
    period_step <- 1/4
    time_period_label <- "Q"
  }
  
  period_selected <- paste0(period_type, "('", period_selected_day, "')") %>%
    parse(text = .) %>%
    eval
  
  period_selected_ym <- yearmon(period_selected_year) + (period_selected-1) * period_step
  period_selected_start <- as.Date(period_selected_ym)
  period_previous_ym <- period_selected_ym - period_step
  period_previous_start <- as.Date(period_previous_ym)
  
  period_previous <- paste0(period_type, "('", period_previous_start, "')") %>%
    parse(text = .) %>%
    eval
  
  period_previous_year <- year(period_previous_start)
  
  period_next_ym <- period_selected_ym + period_step
  period_next_start <- as.Date(period_next_ym )
  
  period_last_year_ym <- period_selected_ym - 1
  period_last_year_start <- as.Date(period_last_year_ym)
  period_last_year_end <- (period_next_ym - 1) %>% as.Date()
  
  period_last_year_year <- year(period_last_year_start)
    
  
  current_date <- today()
  if(period_next_start > current_date){
    period_next_start <- current_date+1
  }
  
  start_dates <- c(period_last_year_start, period_previous_start, period_selected_start)
  end_dates <- c(period_last_year_end, period_selected_start, period_next_start)
  if(period_type == "month"){
    time_period <- c(as.character(period_last_year_ym),
                     as.character(period_previous_ym),
                     as.character(period_selected_ym))
    
  } else if(period_type == "quarter"){
    time_period <- c(paste0("Q", period_selected, " ", period_last_year_year),
                     paste0("Q", period_previous, " ", period_previous_year),
                     paste0("Q", period_selected, " ", period_selected_year))
    }
  
  output <- list("start_dates" = start_dates, "end_dates" = end_dates, "time_period" = time_period)
  
  return(output)
}
emerson-civicscience/trendfinder documentation built on Sept. 4, 2022, 10:30 a.m.