#' 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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.