R: Cut a Numeric Variable into Intervals

cut2 {Hmisc} | R Documentation

## Cut a Numeric Variable into Intervals

### Description

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.

### Usage

    cut2(x, cuts, m=150, g, levels.mean=FALSE, digits, minmax=TRUE,
    oneval=TRUE, onlycuts=FALSE, formatfun=format, ...)

### 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)
`...` | additional arguments passed to `formatfun`

### Value

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

### See Also

`cut`, `quantile`

### Examples

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

[Package Hmisc version 4.2-0 Index]