R/polysimul_tabFreq.R

Defines functions polysimul_tabFreq

Documented in polysimul_tabFreq

#' Distribution de l'indicateur
#'
#' Tableau de fréquence
#'
#' @param data_polysimul1_stats Dataset créé par la fonction `polysimul1_stats()`.
#'
#' @return `list` contenant des `data.table` de chaque statistique descriptive.
#' * Valeur : Nombre de médicament(s) consommé(s).
#' * Freq : Fréquence de la valeur.
#' * Pourcentage
#' * Cumul : Pourcentage cumulatif.
#' @import data.table
#' @importFrom stringr str_detect str_replace
#' @export
polysimul_tabFreq <- function(data_polysimul1_stats,
                              cols = c("Moyenne", "Min", "Médiane", "Max")){

# Fonctions --------------------------------------------------------------------------------------
  ### Tableau de fréquence
  ### x : dataset créé
  ### col : Nom de la colonne à sélectionner
  .tabFreq <- function(x, col){
    dt <- x[, ..col]  # sélection de la colonne
    setnames(dt, col, "Valeur")  # renommmer la colonne de la statistique descriptive
    nZero <- dt[Valeur==0, .N]  # nombre de ID sans consommation
    dt[, Valeur := floor(Valeur)]  # entier inférieur de la valeur (début de la classe)
    dt <- dt[, .(Freq = .N), keyby = Valeur]  # fréquence
    Val2add <- seq(0, max(dt$Valeur))[!seq(0, max(dt$Valeur)) %in% dt$Valeur]  # s'il y a des valeurs possibles absentes
    if(length(Val2add)){  # ajouter les valeurs absente
      dt <- rbind(dt, data.table(Valeur = Val2add, Freq = 0))
      setkey(dt, Valeur) # tri
    }
    dt[, Pourcentage := Freq / sum(Freq) * 100]  # pourcentage
    dt[, Cumul := cumsum(Pourcentage)]  # pourcentage cumulé
    dt[, Valeur := paste0("[",Valeur,",",Valeur+1,"[")]  # indiquer que c'est une classe
    dt[, Valeur := factor(Valeur, levels = Valeur)]  # transformer en facteur pour future utilisation numérique
    attr(dt, "nZero") <- list(n = nZero, ratio = nZero/sum(dt$Freq))  # ajouter en attribut le nombre de sans consommation.
    return(dt)
  }

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

  x <- copy(data_polysimul1_stats[, ..cols])  # sélection des colonnes
  dist_indic <- lapply(names(x), function(col) return(.tabFreq(x, col)))
  names(dist_indic) <- names(x)  # nom des éléments de la liste
  return(dist_indic)
}
INESSS-QC/polymed1 documentation built on Aug. 4, 2020, 12:02 a.m.