Function like cut but left endpoints are inclusive and labels are of
the form [lower, upper), except that last interval is [lower,upper].
If cuts are given, will by default make sure that cuts include entire
range of x.
Also, if cuts are not given, will cut x into quantile groups
(g given) or groups
with a given minimum number of observations (m). Whereas cut creates a
category object, cut2 creates a factor object.

a factor variable with levels of the form [a,b) or formatted means
(character strings) unless onlycuts is TRUE in which case
a numeric vector is returned

Arguments

x

numeric vector to classify into intervals

cuts

cut points

m

desired minimum number of observations in a group. The algorithm does
not guarantee that all groups will have at least m observations.

g

number of quantile groups

levels.mean

set to TRUE to make the new categorical vector have levels attribute that is
the group means of x instead of interval endpoint labels

digits

number of significant digits to use in constructing levels. Default is 3
(5 if levels.mean=TRUE)

minmax

if cuts is specified but min(x)<min(cuts) or max(x)>max(cuts), augments
cuts to include min and max x

oneval

if an interval contains only one unique value, the interval will be
labeled with the formatted version of that value instead of the
interval endpoints, unless oneval=FALSE

onlycuts

set to TRUE to only return the vector of computed cuts. This
consists of the interior values plus outer ranges.

formatfun

formatting function, supports formula notation (if rlang is installed)

set.seed(1)
x <- runif(1000, 0, 100)
z <- cut2(x, c(10,20,30))
table(z)
table(cut2(x, g=10)) # quantile groupstable(cut2(x, m=50)) # group x into intevals with at least 50 obs.