R: Summarise (for Time Series Data)

summarise_by_time {timetk} | R Documentation

## Summarise (for Time Series Data)

### Description

`summarise_by_time()` is a time-based variant of the popular `dplyr::summarise()` function that uses `.date_var` to specify a date or date-time column and `.by` to group the calculation by groups like "5 seconds", "week", or "3 months".

`summarise_by_time()` and `summarize_by_time()` are synonyms.

### Usage

    summarise_by_time(
      .data,
      .date_var,
      ...,
      .by = "day",
      .type = c("floor", "ceiling", "round")
    )

    summarize_by_time(
      .data,
      .date_var,
      ...,
      .by = "day",
      .type = c("floor", "ceiling", "round")
    )

### Arguments

`.data` | A `tbl` object or `data.frame`
`.date_var` | A column of date or date-time (e.g. POSIXct) data class
`...` | Name-value pairs of summary functions. The name will be the name of the variable in the result. The value can be: A vector of length 1, e.g. `min(x)`, `n()`, or `sum(is.na(y))`. A vector of length `n`, e.g. `quantile()`. A data frame, to add multiple columns from a single expression.
`.by` | A time unit to summarise by. Time units are collapsed using `lubridate::floor_date()` or `lubridate::ceiling_date()`. The value can be: `second` `minute` `hour` `day` `week` `month` `bimonth` `quarter` `season` `halfyear` `year` Arbitrary unique English abbreviations as in the `lubridate::period()` constructor are allowed.
`.type` | One of "floor", "ceiling", or "round. Defaults to "floor". See `lubridate::round_date`.

### Value

A `tibble` or `data.frame`

### Useful summary functions

- Sum: `sum()`

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

- Spread: `sd()`, `var()`

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

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

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

- Correlation: `cor()`, `cov()`

### See Also

Time-Based dplyr functions:

- `summarise_by_time()` - Easily summarise using a date column.

- `filter_by_time()` - Quickly filter using date ranges.

- `between_time()` - Range detection for date or date-time sequences.

- `pad_by_time()` - Insert time series rows with regularly spaced timestamps

- `slidify()` - Turn any function into a sliding (rolling) function

### Examples

    # Libraries
    library(tidyquant)
    library(timetk)
    library(dplyr)

    # First adjusted price in each month
    FANG %>%
        group_by(symbol) %>%
        summarise_by_time(
            date, .by = "month", # Setup for monthly aggregation
            adjusted  = FIRST(adjusted)
        )

    # Last adjused price in each month (day is first day of next month with ceiling option)
    FANG %>%
        group_by(symbol) %>%
        summarise_by_time(
            .date_var  = date,
            .by        = "month",
            adjusted   = LAST(adjusted),
            .type      = "ceiling") %>%
        # Shift to the last day of the month
        mutate(date = date %-time% "1 day")

    # Total Volume each year (.by is set to "year" now)
    FANG %>%
        group_by(symbol) %>%
        summarise_by_time(
            .date_var  = date,
            .by        = "year",
            adjusted   = SUM(volume))

[Package timetk version 2.0.0 Index]