R: Identify groups

vec_group {vctrs} | R Documentation

## Identify groups

### Description

- `vec_group_id()` returns an identifier for the group that each element of `x` falls in, constructed in the order that they appear. The number of groups is also returned as an attribute, `n`.

- `vec_group_loc()` returns a data frame containing a `key` column with the unique groups, and a `loc` column with the locations of each group in `x`.

- `vec_group_rle()` locates groups in `x` and returns them run length encoded in the order that they appear. The return value is a rcrd object with fields for the `group` identifiers and the run `length` of the corresponding group. The number of groups is also returned as an attribute, `n`.

### Usage

    vec_group_id(x)

    vec_group_loc(x)

    vec_group_rle(x)

### Arguments

`x` | A vector

### Value

- `vec_group_id()`: An integer vector with the same size as `x`.

- `vec_group_loc()`: A two column data frame with size equal to `vec_size(vec_unique(x))`.

  - A `key` column of type `vec_ptype(x)`

  - A `loc` column of type list, with elements of type integer.

- `vec_group_rle()`: A `vctrs_group_rle` rcrd object with two integer vector fields: `group` and `length`.

Note that when using `vec_group_loc()` for complex types, the default `data.frame` print method will be suboptimal, and you will want to coerce into a tibble to better understand the output.

### Examples

    purrr <- c("p", "u", "r", "r", "r")
    vec_group_id(purrr)
    vec_group_rle(purrr)

    groups <- mtcars[c("vs", "am")]
    vec_group_id(groups)

    group_rle <- vec_group_rle(groups)
    group_rle

    # Access fields with `field()`
    field(group_rle, "group")
    field(group_rle, "length")

    # `vec_group_id()` is equivalent to
    vec_match(groups, vec_unique(groups))

    vec_group_loc(mtcars$vs)
    vec_group_loc(mtcars[c("vs", "am")])

    if (require("tibble")) {
      as_tibble(vec_group_loc(mtcars[c("vs", "am")]))
    }

[Package vctrs version 0.2.4 Index]