Truncating dates (and other date-time manipulations)
On Thu, Sep 11, 2008 at 2:26 PM, Jeffrey J. Hallman <jhallman at frb.gov> wrote:
Look at the ti (Time Index) class in package tis. Here's some examples I just did:
x <- Sys.Date() x
[1] "2008-09-11"
ti(x, "wsaturday") ## a ti for the week that x falls into
[1] 20080913 class: ti
ti(x + 1, "wsaturday") - 1 ## ti for the latest complete week
[1] 20080906 class: ti
as.Date(ti(x + 1, "wsaturday") - 1) ## as a Date
[1] "2008-09-06"
ymd(ti(x + 1, "wsaturday") - 1) ## or just the yyyymmdd number
[1] 20080906
Hmmm: dates <- structure(c(8516, 8544, 8568, 8596, 8609, 8666, 8701, 8750, 8754, 8798, 8811, 8817, 8860, 8873, 8918, 8931, 8966, 9020, 9034, 9056 ), class = "Date")
range(dates)
[1] "1993-04-26" "1994-10-18"
as.Date(ti(range(dates), "monthly"))
[1] "1993-04-30" "1994-10-31"
as.Date(ti(range(dates), "annual"))
[1] "1993-12-31" "1994-12-31" What's the easiest way to control whether the dates are rounded up or down? And to get the starting period I just subtract one from the ti object and then add one to the Date object? Is there any standard way to do multiples of periods? (e.g. 3 weeks, 4 days). And is the finest resolution of a ti object a day? I don't think I see any periods less than that in the output of tif() Hadley