R/age.R

Defines functions age

Documented in age

#' Age
#'
#' Détermine l'âge entre une `Date` et la `Naissance`.
#'
#' On considère une année complète la même date, mais à l'année suivante, par exemple du 1er avril 2000 au 1er avril 2001.
#'
#' @param Date "AAAA-MM-JJ". Date(s) à laquelle l'âge est calculé. Si 1 valeur : Même date pour toutes les dates de naissance. Si plusieurs valeurs, doit être un vecteur de même longueur que `Naissance`.
#' @param Naissance "AAAA-MM-JJ". Date(s) de naissance.
#'
#' @return integer
#' @importFrom lubridate is.Date as_date
#' @export
#'
#' @examples
#' age("2019-12-24", "1989-12-24")
#' age("2019-12-24", "1989-12-01")
#' age("2019-12-24", "1989-12-26")
age <- function(Date, Naissance){

  check <- newArgCheck()
  # Convertir en Date si nécessaire
  if(!is.Date(Date))
    Date <- as_date(Date)
  if(!is.Date(Naissance))
    Naissance <- as_date(Naissance)
  # Il ne peut y avoir de NA lorsqu'on calcule une durée entre 2 dates
  if(anyNA(Date))
    addError("Date ne peut contenir de NA. Doit être de la forme 'AAAA-MM-JJ'.", check)
  if(anyNA(Naissance))
    addError("Naissance ne peut contenir de NA. Doit être de la forme 'AAAA-MM-JJ'.", check)
  if(!(length(Date) == 1 | length(Date) == length(Naissance)))
    addError("Date doit être de longueur 1 ou de même longueur que Naissance.", check)
  finishArgCheck(check)  # vérification des arguments

  return(as.integer(floor((Date - Naissance) / 365.25)))

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