R: Apply slice inside periods (windows)

slice_period {timetk} | R Documentation

## Apply slice inside periods (windows)

### Description

Applies a dplyr slice inside a time-based period (window).

### Usage

    slice_period(.data, ..., .date_var, .period = "1 day")

### Arguments

`.data` | A `tbl` object or `data.frame`
`...` | For `slice()`: <`data-masking`> Integer row values. Provide either positive values to keep, or negative values to drop. The values provided must be either all positive or all negative. Indices beyond the number of rows in the input are silently ignored. For `slice_helpers()`, these arguments are passed on to methods.
`.date_var` | A column containing date or date-time values. If missing, attempts to auto-detect date column.
`.period` | A period to slice within. Time units are grouped 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: `"1 year"` `"2 months"` `"30 seconds"`

### Value

A `tibble` or `data.frame`

### See Also

Time-Based dplyr functions:

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

- `mutate_by_time()` - Simplifies applying mutations by time windows.

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

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

- `filter_period()` - Apply filtering expressions inside periods (windows)

- `slice_period()` - Apply slice inside periods (windows)

- `condense_period()` - Convert to a different periodicity

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

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

### Examples

    # Libraries
    library(timetk)
    library(dplyr)

    # First 5 observations in each month
    m4_daily %>%
        group_by(id) %>%
        slice_period(1:5, .period = "1 month")

    # Last observation in each month
    m4_daily %>%
        group_by(id) %>%
        slice_period(n(), .period = "1 month")

[Package timetk version 2.6.0 Index]