Similar to base::droplevels
but much faster.
fdroplevels(x, exclude = if (anyNA(levels(x))) NULL else NA, ...)
setdroplevels(x, except = NULL, exclude = NULL)# S3 method for data.table
droplevels(x, except = NULL, exclude, in.place = FALSE, ...)
fdroplevels
returns a factor
.
droplevels
returns a data.table
where levels are dropped at factor columns.
factor
or data.table
where unused levels should be dropped.
A character
vector of factor levels which are dropped no matter of presented or not.
An integer
vector of indices of data.table columns which are not modified by dropping levels.
logical (default is FALSE
). If TRUE
levels of factors of data.table
are modified in-place.
further arguments passed to methods
data.table
, duplicated
, unique
# on vectors
x = factor(letters[1:10])
fdroplevels(x[1:5])
# exclude levels from drop
fdroplevels(x[1:5], exclude = c("a", "c"))
# on data.table
DT = data.table(a = factor(1:10), b = factor(letters[1:10]))
droplevels(head(DT))[["b"]]
# exclude levels
droplevels(head(DT), exclude = c("b", "c"))[["b"]]
# except columns from drop
droplevels(head(DT), except = 2)[["b"]]
droplevels(head(DT), except = 1)[["b"]]
Run the code above in your browser using DataLab