R/dist_age_sex.R

Defines functions dist_age_sex

Documented in dist_age_sex

#' Distribution de la population d'étude
#'
#' Indique le nombre de femmes et d'hommes selon leur age.
#'
#' @param x data.
#' @param age Nom de la colonne indiquant l'âge.
#' @param sex Nom de la colonne indiquant le sexe.
#' @param breaks Catégorie d'âge. Par exemple c(a, b, c) où a, b et c sont des entiers. Implique les classes suivantes : [a,b[; [b,c[.
#' @param max TRUE/FALSE. TRUE : breaks = c(a, b, c, max(x$age)+1) : [a,b[; [b,c[ et [c, max(x$age)+1[. FALSE : voir \code{breaks}.
#' @param right Si la borne supérieure est incluse ou excluse.
#'
#' @return Tableau indiquant le nombre de femmes et d'hommes selon leur groupe d'âge.
#' @import data.table
#' @export
dist_age_sex <- function(x, age, sex, breaks, max = TRUE, right = FALSE){

  ### Verification
  ArgCheck()  # fonctions et arguments pour verification
  # Type des arguments
  if(!is.data.frame(x)) addError("L'argument 'x' n'est pas de type DATA.FRAME.", argcheck)
  if(!is.character(age)) addError("L'argument 'age' n'est pas de type CHARACTER.", argcheck)
  if(!is.character(sex)) addError("L'argument 'sex' n'est pas de type CHARACTER.", argcheck)
  if(!is.numeric(breaks)) addError("L'argument 'breaks' n'est pas de type NUMERIC.", argcheck)
  if(!is.logical(max)) addError("L'argument 'max' doit être de type LOGICAL.", argcheck)
  if(!is.logical(right)) addError("L'argument 'right' doit être de type LOGICAL.", argcheck)
  finishArgCheck(argcheck)
  # Colonnes existantes dans x
  if(!age %in% names(x)) addError(paste0("'",age,"' (age) n'est pas un nom de colonne de 'x'."), argcheck)
  if(!sex %in% names(x)) addError(paste0("'",sex,"' (sex) n'est pas un nom de colonne de 'x'."), argcheck)
  finishArgCheck(argcheck)
  # Type des colonnes
  if(!is.numeric(x[[age]])) addError(paste("La colonne", age, "n'est pas de type NUMERIC."), argcheck)
  if(!is.numeric(x[[sex]])) addError(paste("La colonne", sex, "n'est pas de type CHARACTER"), argcheck)
  finishArgCheck(argcheck)
  
  
  ### Code
  x <- as.data.table(x)
  cols <- c(age, sex)  # noms des colonnes à sélectionner
  x <- x[, ..cols]  # sélection des colonnes
  setnames(x, cols, c("age", "sex"))  # modifier le nom
  x <- update_sex(x)  # uniformiser les sexes
  x <- setgroup(x, "age", breaks, max, right, FALSE)  # convertir les âges en groupe d'âge
  x <- x[, .(n = .N), .(age, sex)]  # nombre d'observations par age+sex
  x <- dcast(x, age ~ sex, value.var = "n")  # lignes en colonnes
  return(x)

}
INESSSQC/validation documentation built on May 5, 2019, 7:05 p.m.