Learn R Programming

splusTimeDate (version 2.5.0-137)

timeAlign: Alignment of Times

Description

Aligns a time vector to a time unit specified as in timeSeq.

Usage

timeAlign(x, by="days", k.by=1, direction=1, week.align=NULL, holidays=timeDate())

Arguments

x
a time/date object.
by
one of the following character strings, giving the units to align to:
  • "milliseconds"
  • "seconds"
  • "minutes"
  • "hours"
  • "days",
  • "weekdays"
  • "bizdays"
  • "weeks"
  • "months"
  • "quarters"
  • "years"

k.by
a non-zero integer giving the number of the by units to align to. Ignored for "weekdays", "bizdays", and "weeks".
direction
either 1 or -1, to align to the next or previous time that is an integer number of the k.by * by units.
week.align
if not NULL, and by is "weeks", you can supply a character string (or an integer, 0 to 6 with 0 being Sunday) to specify a weekday to align to. The character string must be sufficient to make a unique case-insensitive match to the strings in timeDateOptions("time.day.name").
holidays
dates of holidays for business day alignment.

Value

returns a time object whose elements are moved up or down (according to direction), so that they lie on integer multiples of k.by * by units of time, starting from the beginning of the next larger time unit (for example, if by="days", then align to multiples of k.by days added to the first of the month. If by="hours", align to multiples of k.by hours since midnight).Notes
  • for "weeks", "weekdays", and "bizdays", k.by is assumed to be 1 and ignored.
  • "weeks" without week.align is equivalent to "days".
  • k.by should be a divisor of the number of by units in the next larger time unit, or NA values result.

See Also

timeSeq.

Examples

Run this code
x <- timeDate(c("2/11/1992 22:34", "7/8/1995 08:32"),  
       format="%a %02m/%02d/%Y %02H:%02M") 
# move to beginning of month 
timeAlign(x,"months",direction=-1) 
# move to beginning of next month 
timeAlign(x,"months",direction=1) 
# move to next multiple of 3 hours 
timeAlign(x,"hours",3) 
# move to next Friday 
timeAlign(x,"weeks", week.align="Friday") 

Run the code above in your browser using DataLab