Learn R Programming

splusTimeDate (version 2.5.8)

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())

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.

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.

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