R/setgroup.R

Defines functions setgroup

Documented in setgroup

#' Modifier les valeurs en classes
#'
#' À partir de l'argument \code{breaks}, \code{setgroup()} modifie les valeurs en classes. Utile si l'on veut par la suite compter le nombre de valeurs par classe.
#'
#' Si \code{max = FALSE}, \code{breaks = c(20,40,60,80)} implique les classes suivantes : `[20;40[`, `[40;60[` et `[60;80[`. Si \code{max = TRUE} et que le maximum de la valeur de la colonne \code{col} est 91, les classes seront : `[20;40[`, `[40;60[`, `[60;80[` et `[80;92[`.\cr\cr
#'
#' @param x Tableau à modifier.
#' @param col CHR, nom de la colonne où l'on veut créer les classes.
#' @param breaks NUM, bornes des classes. Voir section \emph{Details}.
#' @param max LOGI, si on inclut tous les âges supérieurs au maximum de \code{breaks}.
#' @param right LOGI, voir argument \code{right} de la fonction \code{\link[base:cut]{cut}}.
#' @param del LOGI, supprimer les observations qui ne font pas parti d'une classe.
#'
#' @export
#' @keywords internal
#' @import data.table
#'
#' @examples
#' df <- data.frame(ID = 1:10,
#'                  Sex = sample(c("M", "F"), 10, T),
#'                  Age = seq(5,95,10))
#'
#' # max = FALSE
#' setgroup(df, col = "Age",
#'          breaks = c(0,10,20,30,40,50,60,70,80,90,100),
#'          max = FALSE)
#'
#' # max = TRUE
#' setgroup(df, col = "Age",
#'          breaks = c(0,10,20,30,40,50,60),
#'          max = TRUE)
setgroup <- function(x, col, breaks, max = TRUE, right = FALSE, del = FALSE){

  dt <- as.data.table(x)
  # Si max = TRUE -> dernier nombre de 'breaks' est une borne inférieure, on ajoute la borne supérieure
  if(max & max(dt[[col]]) > max(breaks)) breaks <- c(breaks, max(max(dt[[col]]))+1)
  # Modification des valeurs de la colonne en classes
  dt <- dt[, paste(col) := cut(get(col), breaks, right = right)]
  if(del) dt <- dt[!is.na(get(col))]
  dt

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