R/difftime_from_date.R

Defines functions difftime_from_date

Documented in difftime_from_date

#' Durée entre deux dates
#'
#' Indique le nombre de jours, de semaines ou d'années entre deux dates : `origin` - `x`.
#'
#' * La fonction retourne un vecteur de type `integer`, donc les valeurs sont arrondis **à l'entier inférieur**.
#'
#' @param x Vecteur contenant les dates d'analyse.
#' @param origin Date de référence.
#' @param unit 'days', 'weeks', 'years'. Unité.
#'
#' @return vecteur `integer`.
#' @importFrom lubridate is.Date as_date
#' @export
difftime_from_date <- function(
  x,  # vecteur date "AAAA-MM-JJ"
  origin = Sys.Date(),  # date de référence pour calculs
  unit = "years"  # days, weeks, years
){

# Fonction ----------------------------------------------------------------------------------------

  .fct_date <- function(x, origin, unit){
    if(unit == "years"){
      return(as.integer(difftime(origin, x, units = "weeks") / 52))
    } else if(unit == "weeks" | unit == "days"){
      return(as.integer(difftime(origin, x, units = unit)))
    } else {
      stop("Les valeurs permises de unit sont {'days', 'weeks', 'years'}")
    }
  }

# Code --------------------------------------------------------------------------------------------

  if(!is.Date(x)) x <- as_date(x)  # convertir en Date si nécessaire
  if(!is.Date(origin)) origin <- as_date(origin)
  return(sapply(x, .fct_date, origin, unit))

}
guiboucher/INESSS-inesss documentation built on April 20, 2020, 10:47 p.m.