date-rounding {clock} | R Documentation |
Rounding: date
Description
These are Date methods for the rounding generics.
-
date_floor()
rounds a date down to a multiple of the specifiedprecision
. -
date_ceiling()
rounds a date up to a multiple of the specifiedprecision
. -
date_round()
rounds up or down depending on what is closer, rounding up on ties.
The only supported rounding precision
s for Dates are "day"
and "week"
.
You can group by irregular periods such as "month"
or "year"
by using
date_group()
.
Usage
## S3 method for class 'Date'
date_floor(x, precision, ..., n = 1L, origin = NULL)
## S3 method for class 'Date'
date_ceiling(x, precision, ..., n = 1L, origin = NULL)
## S3 method for class 'Date'
date_round(x, precision, ..., n = 1L, origin = NULL)
Arguments
x |
A date vector. |
precision |
One of:
|
... |
These dots are for future extensions and must be empty. |
n |
A single positive integer specifying a multiple of |
origin |
An origin to start counting from. The default |
Details
When rounding by "week"
, remember that the origin
determines the "week
start". By default, 1970-01-01 is the implicit origin, which is a
Thursday. If you would like to round by weeks with a different week start,
just supply an origin on the weekday you are interested in.
Value
x
rounded to the specified precision
.
Examples
x <- as.Date("2019-03-31") + 0:5
x
# Flooring by 2 days, note that this is not tied to the current month,
# and instead counts from the specified `origin`, so groups can cross
# the month boundary
date_floor(x, "day", n = 2)
# Compare to `date_group()`, which groups by the day of the month
date_group(x, "day", n = 2)
y <- as.Date("2019-01-01") + 0:20
y
# Flooring by week uses an implicit `origin` of 1970-01-01, which
# is a Thursday
date_floor(y, "week")
as_weekday(date_floor(y, "week"))
# If you want to round by weeks with a different week start, supply an
# `origin` that falls on the weekday you care about. This uses a Monday.
origin <- as.Date("1970-01-05")
as_weekday(origin)
date_floor(y, "week", origin = origin)
as_weekday(date_floor(y, "week", origin = origin))