summarise {dplyr} | R Documentation

## Reduce multiple values down to a single value

### Description

Create one or more scalar variables summarizing the variables of an existing tbl. Tbls with groups created by `group_by()` will result in one row in the output for each group. Tbls with no groups will result in one row.

### Usage

    summarise(.data, ...)

    summarize(.data, ...)

### Arguments

`.data` | A tbl. All main verbs are S3 generics and provide methods for `tbl_df()`, `dtplyr::tbl_dt()` and `dbplyr::tbl_dbi()`.
`...` | Name-value pairs of summary functions. The name will be the name of the variable in the result. The value should be an expression that returns a single value like `min(x)`, `n()`, or `sum(is.na(y))`. The arguments in `...` are automatically quoted and evaluated in the context of the data frame. They support unquoting and splicing. See `vignette("programming")` for an introduction to these concepts.

### Details

`summarise()` and `summarize()` are synonyms.

### Value

An object of the same class as `.data`. One grouping level will be dropped.

### Useful functions

- Center: `mean()`, `median()`

- Spread: `sd()`, `IQR()`, `mad()`

- Range: `min()`, `max()`, `quantile()`

- Position: `first()`, `last()`, `nth()`,

- Count: `n()`, `n_distinct()`

- Logical: `any()`, `all()`

### Backend variations

Data frames are the only backend that supports creating a variable and using it in the same summary. See examples for more details.

### Tidy data

When applied to a data frame, row names are silently dropped. To preserve, convert to an explicit variable with `tibble::rownames_to_column()`.

### See Also

Other single table verbs: `arrange`, `filter`, `mutate`, `select`, `slice`

### Examples

    # A summary applied to ungrouped tbl returns a single row
    mtcars %>%
      summarise(mean = mean(disp), n = n())

    # Usually, you'll want to group first
    mtcars %>%
      group_by(cyl) %>%
      summarise(mean = mean(disp), n = n())

    # Each summary call removes one grouping level (since that group
    # is now just a single row)
    mtcars %>%
      group_by(cyl, vs) %>%
      summarise(cyl_n = n()) %>%
      group_vars()

    # Note that with data frames, newly created summaries immediately
    # overwrite existing variables
    mtcars %>%
      group_by(cyl) %>%
      summarise(disp = mean(disp), sd = sd(disp))

    # Refer to column names stored as strings with the `.data` pronoun:
    var <- "mass"
    summarise(starwars, avg = mean(.data[[var]], na.rm = TRUE))

    # For more complex cases, knowledge of tidy evaluation and the
    # unquote operator `!!` is required. See https://tidyeval.tidyverse.org/
    #
    # One useful and simple tidy eval technique is to use `!!` to
    # bypass the data frame and its columns. Here is how to divide the
    # column `mass` by an object of the same name:
    mass <- 100
    summarise(starwars, avg = mean(mass / !!mass, na.rm = TRUE))

[Package dplyr version 0.8.0.1 Index]