chop_equally() chops x into groups with an equal number of elements.

## Usage

chop_equally(
x,
groups,
...,
labels = lbl_intervals(),
left = is.numeric(x),
close_end = TRUE,
raw = TRUE
)

brk_equally(groups)

tab_equally(x, groups, ..., left = is.numeric(x), raw = TRUE)

## Arguments

x

A vector.

groups

Number of groups.

...

Passed to chop().

labels

A character vector of labels or a function to create labels.

left

Logical. Left-closed or right-closed breaks?

close_end

Logical. Close last break at right? (If left is FALSE, close first break at left?)

raw

Logical. Use raw values in labels?

## Value

chop_* functions return a factor of the same length as x.

brk_* functions return a function to create breaks.

tab_* functions return a contingency table().

## Details

chop_equally() uses brk_quantiles() under the hood. If x has duplicate elements, you may get fewer groups than requested. If so, a warning will be emitted. See the examples.

Other chopping functions: chop(), chop_evenly(), chop_fn(), chop_mean_sd(), chop_n(), chop_proportions(), chop_quantiles(), chop_width(), fillet()

## Examples

chop_equally(1:10, 5)
#>  [1] [1, 2.8)   [1, 2.8)   [2.8, 4.6) [2.8, 4.6) [4.6, 6.4) [4.6, 6.4)
#>  [7] [6.4, 8.2) [6.4, 8.2) [8.2, 10]  [8.2, 10]
#> Levels: [1, 2.8) [2.8, 4.6) [4.6, 6.4) [6.4, 8.2) [8.2, 10]

# You can't always guarantee groups groups:
dupes <- c(1, 1, 1, 2, 3, 4, 4, 4)
quantile(dupes, 0:4/4)
#>   0%  25%  50%  75% 100%
#>  1.0  1.0  2.5  4.0  4.0
chop_equally(dupes, 4)
#> [1] {1}      {1}      {1}      (1, 2.5) [2.5, 4) {4}      {4}      {4}
#> Levels: {1} (1, 2.5) [2.5, 4) {4}