#' Données à exclure
#'
#' Sélectionne les observations qui ne respectent pas les critères.
#'
#' La base de données \code{x} doit contenir \strong{uniquement} les colonnes nécessaires à l'exclusion.
#'
#' @param x Base de données d'analyse.
#' @param ... Critères d'inclusion à inscrire sous la forme : \code{nomColonne = nombre}. Les critères peuvent être insérés dans une liste.
#' @param filter Détermine l'opérateur logique des critères : "<=", "<", ">" ou ">=".
#' @param cols Facultatif. Nom des colonnes nécessaires à l'exclusion. S'il n'est pas défini, \code{by} aura pour valeur les colonnes existantes dans \code{x}.
#' @param table TRUE si on veut le tableau résultat, FALSE renvoie les combinaisons uniques des colonnes qui ne sont pas dans les critères
#'
#' @return data.table ou vecteur indiquant les codes exclus.
#'
#' @import data.table
#' @export
#' @examples
#' DT <- data.frame(Annee = rep(c(2014, 2015), each = 15),
#' Code = rep(rep(1:3, each = 5), 2),
#' Region = rep(1:5, 6),
#' obs = c(10,20,30,40,50,20,30,40,50,60,
#' 40,50,60,70,80, 0, 5,10,15,20,
#' 5,10,15,20,25,10,15,20,25,30))
#' exclus(DT, obs = 20) # 1 critère
#' exclus(DT, obs = 20, Region = 3) # 2 critères
#' exclus(DT, obs = 20, Region = 3, Code = 3) # 3 critères
#'
#' # Sélection des colonnes avec 'cols'
#' exclus(DT, obs = 30, cols = c("Annee", "Code", "obs"))
#'
#' # Choix d'exclusion, ">=" vs "<"
#' exclus(DT, obs = 20, Region = 3, filter = ">=")
#' exclus(DT, obs = 20, filter = "<")
#'
#' # table = FALSE vs TRUE
#' exclus(DT, obs = 20, Region = 3, table = TRUE)
#' exclus(DT, obs = 20, Region = 3, table = FALSE)
exclus <- function(x, ..., filter = ">=", cols = NULL, table = TRUE){
#### Verification
ArgCheck()
if(!is.data.frame(x)) addError("'x' n'est pas de type DATA.FRAME.", argcheck)
finishArgCheck(argcheck)
if(!is.null(cols)){
if(any(!cols %in% names(x))) addError("Une valeur de 'cols' n'est pas un nom de colonne de 'x'.", argcheck)
}
if(!filter %in% c("<=", "<", ">", ">=")) addError(paste0("La valeur de filter (",filter,") n'est pas une valeur permise.", argcheck))
if(!is.logical(table)) addError("'table' doit être de type LOGICAL.", argcheck)
#### Code ####
dt <- as.data.table(x)
if(is.null(cols)) cols <- names(dt) else dt <- dt[, ..cols]
if(filter == "<="){
filter <- ">"
} else if(filter == "<"){
filter <- ">="
} else if(filter == ">"){
filter <- "<="
} else if(filter == ">="){
filter <- "<"
} else {
stop("'filter' peut prendre les valeurs suivantes : '<', '<=', '>', '>='.") # message d'erreur
}
dt <- inclus(x, ..., filter = filter, cols = cols, table = table)
dt
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.