slice_period: Apply slice inside periods (windows)

View source: R/dplyr-slice_period.R

slice_periodR Documentation

Apply slice inside periods (windows)


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


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



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_*()⁠, these arguments are passed on to methods.


A column containing date or date-time values. If missing, attempts to auto-detect date column.


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"


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


# Libraries

# 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")

timetk documentation built on Sept. 22, 2023, 5:11 p.m.