The easiest way to filter time-based start/end ranges using shorthand timeseries notation.
See filter_period() for applying filter expression by period (windows).
Details
Pure Time Series Filtering Flexibilty
The .start_date and .end_date parameters are designed with flexibility in mind.
Each side of the time_formula is specified as the character
'YYYY-MM-DD HH:MM:SS', but powerful shorthand is available.
Some examples are:
Year:
.start_date = '2013', .end_date = '2015'Month:
.start_date = '2013-01', .end_date = '2016-06'Day:
.start_date = '2013-01-05', .end_date = '2016-06-04'Second:
.start_date = '2013-01-05 10:22:15', .end_date = '2018-06-03 12:14:22'Variations:
.start_date = '2013', .end_date = '2016-06'
Key Words: "start" and "end"
Use the keywords "start" and "end" as shorthand, instead of specifying the actual start and end values. Here are some examples:
Start of the series to end of 2015:
.start_date = 'start', .end_date = '2015'Start of 2014 to end of series:
.start_date = '2014', .end_date = 'end'
Internal Calculations
All shorthand dates are expanded:
The
.start_dateis expanded to be the first date in that periodThe
.end_dateside is expanded to be the last date in that period
This means that the following examples are equivalent (assuming your index is a POSIXct):
.start_date = '2015'is equivalent to.start_date = '2015-01-01 + 00:00:00'.end_date = '2016'is equivalent to2016-12-31 + 23:59:59'
References
This function is based on the
tibbletime::filter_time()function developed by Davis Vaughan.
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 timestampsfilter_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 periodicitybetween_time()- Range detection for date or date-time sequences.slidify()- Turn any function into a sliding (rolling) function

