The group
function groups numeric values by first ordering and then putting
all values into the same group if their difference is smaller defined by
parameters tolerance
(a constant value) and ppm
(a value-specific
relative value expressed in parts-per-million).
Note
Since grouping is performed on pairwise differences between consecutive
values (after ordering x
), the difference between the smallest and largest
value in a group can be larger than tolerance
and ppm
.
Examples
## Define a (sorted) numeric vector
x <- c(34, 35, 35, 35 + ppm(35, 10), 56, 56.05, 56.1)
## With `ppm = 0` and `tolerance = 0` only identical values are grouped
group(x)
#> [1] 1 2 2 3 4 5 6
## With `tolerance = 0.05`
group(x, tolerance = 0.05)
#> [1] 1 2 2 2 3 3 3
## Also values 56, 56.05 and 56.1 were grouped into a single group,
## although the difference between the smallest 56 and largest value in
## this group (56.1) is 0.1. The (pairwise) difference between the ordered
## values is however 0.05.
## With ppm
group(x, ppm = 10)
#> [1] 1 2 2 2 3 4 5
## Same on an unsorted vector
x <- c(65, 34, 65.1, 35, 66, 65.2)
group(x, tolerance = 0.1)
#> [1] 3 1 3 2 4 3
## Values 65, 65.1 and 65.2 have been grouped into the same group.