| clock-invalid {clock} | R Documentation |
This family of functions is for working with invalid calendar dates.
These represent dates that don't exist, such as
year_month_day(2019, 02, 31).
Invalid dates are allowed in clock, provided that they are eventually
resolved by using invalid_resolve() or by manually resolving them through
arithmetic or setter functions.
invalid_detect(x) invalid_any(x) invalid_count(x) invalid_remove(x) invalid_resolve(x, ..., invalid = NULL)
x |
A calendar vector. |
... |
These dots are for future extensions and must be empty. |
invalid |
One of the following invalid date resolution strategies:
Using either If If |
Invalid dates must be resolved before converting them to a time point.
It is recommended to use "previous" or "next" for resolving invalid
dates, as these ensure that relative ordering among x is maintained.
This is a often a very important property to maintain when doing time series
data analysis. See the examples for more information.
invalid_detect(): Returns a logical vector detecting invalid dates.
invalid_any(): Returns TRUE if any invalid dates are detected.
invalid_count(): Returns a single integer containing the number of
invalid dates.
invalid_remove(): Returns x with invalid dates removed.
invalid_resolve(): Returns x with invalid dates resolved using the
invalid strategy.
# Invalid date x <- year_month_day(2019, 04, 30:31, c(3, 2), 30, 00) x invalid_detect(x) # Previous valid moment in time x_previous <- invalid_resolve(x, invalid = "previous") x_previous # Previous valid day, retaining time of day x_previous_day <- invalid_resolve(x, invalid = "previous-day") x_previous_day # Note that `"previous"` retains the relative ordering in `x` x[1] < x[2] x_previous[1] < x_previous[2] # But `"previous-day"` here does not! x_previous_day[1] < x_previous_day[2] # Remove invalid dates entirely invalid_remove(x) y <- year_quarter_day(2019, 1, 90:92) y # Overflow rolls forward by the number of days between `y` and the previous # valid date invalid_resolve(y, invalid = "overflow")