R: Group by time index and collapse with 'summarise()'

index_by {tsibble} | R Documentation

## Group by time index and collapse with `summarise()`

### Description

`index_by()` is the counterpart of `group_by()` in temporal context, but it only groups the time index. The following operation is applied to each partition of the index, similar to `group_by()` but dealing with index only. `index_by()` + `summarise()` will update the grouping index variable to be the new index. Use `ungroup()` to remove the index grouping vars.

### Usage

    index_by(.data, ...)

### Arguments

`.data` | A `tbl_ts`.
`...` | If empty, grouping the current index. Or a single expression contains an existing variable or a name-value pair. The index functions that can be used, but not limited: lubridate::year: yearly aggregation yearquarter: quarterly aggregation yearmonth: monthly aggregation yearweek: weekly aggregation as.Date or lubridate::as_date: daily aggregation lubridate::ceiling_date, lubridate::floor_date, or lubridate::round_date: fine-resolution aggregation other index functions from other packages

### Details

- A `index_by()`-ed tsibble is indicated by `@` in the "Groups" when displaying on the screen.

### Examples

    pedestrian %>% index_by()
    # Monthly counts across sensors
    library(dplyr, warn.conflicts = FALSE)
    monthly_ped <- pedestrian %>%
      group_by_key() %>%
      index_by(Year_Month = yearmonth(Date_Time)) %>%
      summarise(
        Max_Count = max(Count),
        Min_Count = min(Count)
      )
    monthly_ped
    index(monthly_ped)

    # Using existing variable
    pedestrian %>%
      group_by_key() %>%
      index_by(Date) %>%
      summarise(
        Max_Count = max(Count),
        Min_Count = min(Count)
      )

    # Attempt to aggregate to 4-hour interval, with the effects of DST
    pedestrian %>%
      group_by_key() %>%
      index_by(Date_Time4 = lubridate::floor_date(Date_Time, "4 hour")) %>%
      summarise(Total_Count = sum(Count))

    # Annual trips by Region and State
    tourism %>%
      index_by(Year = lubridate::year(Quarter)) %>%
      group_by(Region, State) %>%
      summarise(Total = sum(Trips))

[Package tsibble version 0.8.2 Index]