[R] Truncating dates (and other date-time manipulations)
Jeffrey J. Hallman
jhallman at frb.gov
Thu Sep 11 21:26:37 CEST 2008
Look at the ti (Time Index) class in package tis. Here's some examples I just did:
> x <- Sys.Date()
> ti(x, "wsaturday") ## a ti for the week that x falls into
> ti(x + 1, "wsaturday") - 1 ## ti for the latest complete week
> as.Date(ti(x + 1, "wsaturday") - 1) ## as a Date
> ymd(ti(x + 1, "wsaturday") - 1) ## or just the yyyymmdd number
You can do the same for "wsunday", if you want weeks that end on Sunday. In
all, ti supports 7 different weekly frequencies, for weeks ending on Monday,
Tuesday, ..., Sunday. It also has daily and business day frequencies, 14
biweekly frequencies, semimonthly, monthly, bimonthly, and three quarterly
frequencies (for quarters that end in October, November and December).
Similarly, there are 12 annual frequencies and 6 semiannual ones, and a
biannual frequency. Also supported are hourly, minutely and secondly
Gabor and I have done some work towards making zoo and ti objects compatible
with each other.
"hadley wickham" <h.wickham at gmail.com> writes:
> I've been struggling to perform common operations on dates that I need
> to be able to correct draw date-time scales - in particular I need to
> be able to round/truncate/ceiling dates to arbitrary precision - e.g.
> to weeks, months or years (or multiples thereof). I haven't been able
> to find anything to do this in base R (trunc.Date only truncates to
> sub-day units), or in the date related contributed packages I've
> looked in (e.g. chron). Have I missed something?
More information about the R-help