group_by {tidybulk} | R Documentation

## Group by one or more variables

### Description

Most data operations are done on groups defined by variables. 'group_by()' takes an existing tbl and converts it into a grouped tbl where operations are performed "by group". 'ungroup()' removes grouping.

### Usage

    group_by(.data, ..., .add = FALSE, .drop = group_by_drop_default(.data))

    ungroup(x, ...)

### Arguments

`.data` | A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr). See *Methods*, below, for more details.
`...` | In 'group_by()', variables or computations to group by. In 'ungroup()', variables to remove from the grouping.
`.add` | When 'FALSE', the default, 'group_by()' will override existing groups. To add to the existing groups, use '.add = TRUE'. This argument was previously called 'add', but that prevented creating a new grouping variable called 'add', and conflicts with our naming conventions.
`.drop` | When '.drop = TRUE', empty groups are dropped. See [group_by_drop_default()] for what the default value is for this argument.
`x` | A [tbl()]

### Value

A [grouped data frame][grouped_df()], unless the combination of '...' and 'add' yields a non empty set of grouping columns, a regular (ungrouped) data frame otherwise.

### Methods

These function are **generic**s, which means that packages can provide implementations (methods) for other classes. See the documentation of individual methods for extra arguments and differences in behaviour.

Methods available in currently loaded packages:

### See Also

Other grouping functions: `filter()`

### Examples

    `%>%` = magrittr::`%>%`
    by_cyl <- mtcars %>% group_by(cyl)

    # grouping doesn't change how the data looks (apart from listing
    # how it's grouped):
    by_cyl

    # It changes how it acts with the other dplyr verbs:
    by_cyl %>% summarise(
      disp = mean(disp),
      hp = mean(hp)
    )
    by_cyl %>% filter(disp == max(disp))

    # Each call to summarise() removes a layer of grouping
    by_vs_am <- mtcars %>% group_by(vs, am)
    by_vs <- by_vs_am %>% summarise(n = n())
    by_vs
    by_vs %>% summarise(n = sum(n))

    # To removing grouping, use ungroup
    by_vs %>%
      ungroup() %>%
      summarise(n = sum(n))

    # You can group by expressions: this is just short-hand for
    # a mutate() followed by a group_by()
    mtcars %>% group_by(vsam = vs + am)

    # when factors are involved, groups can be empty
    tbl <- tibble(
      x = 1:10,
      y = factor(rep(c("a", "c"), each  = 5), levels = c("a", "b", "c"))
    )

[Package tidybulk version 0.99.23 Index]