align
Time Series and Signal Interpolation and Alignment
Description
Aligns or interpolates a time series or signal to new positions. 
Usage
align(x, pos, how="NA", error.how="NA", localzone=FALSE, matchtol=0, by, 
      k.by=1, week.align=NULL, holidays=timeDate())
Arguments
| x | 
the object to be aligned or interpolated. 
 | 
| pos | 
the new positions to align or interpolate it to  
(either pos or by is required). 
 | 
| how | 
specifies how to treat unmatched positions. Must be one of the following: 
| 
"NA"  |  Insert a row of NA.  |  |   
"drop"  |  Drop that position entirely.  |  |  
"nearest"  |  Use the row with the nearest position.  |  |  
"before"  |  Use the data from the row whose position  
is just before the unmatched position.  |  |  
"after"  |  Use the data from the row whose position is  
just after the unmatched position.  |  |  
"interp"  |  Interpolate linearly between "before" and "after". 
 |   
 | 
| error.how | 
specifies available actions when an out of bounds error occurs. (Such an error can occur 
when how is  "before", "after", or "interp"). Must be one of
the following: 
| 
"NA"  |  Insert a row of NA.  |  |  
"drop"  |  Drop that position entirely.  |  |  
"nearest"  |  Use the row with the nearest position. 
 |   
 | 
| localzone | 
if T (x must be a calendar-based time series),
align by matching/interpolating with both x and 
pos in their local time zones, instead of with 
the absolute GMT times. 
 | 
| matchtol | 
the tolerance for matching positions. Positions that match within matchtol do 
not invoke the how argument methods. 
 | 
| by | 
if pos is missing and by is supplied for aligning a  
calendar-based time series, new positions are generated as a regular 
time/date sequence using one of the following:
-  by
 -  k.by
 -  week.align  
 -  holidays
   
by gives the spacing between successive values in the sequence.   
This can be a timeSpan, timeRelative, or numeric value,  
in which case k.by is ignored. 
Alternatively, it can be one of the following character strings: 
 
-  "milliseconds"
 -  "seconds"
 -  "minutes"
 -  "hours"
 -  "days" 
 -  "weekdays"
 -  "bizdays"
 -  "weeks"
 -  "months"
 -  "quarters"
 -  "years"
  
These strings give the time units of intervals between values in  
the sequence. 
 | 
| k.by | 
a non-zero integer giving the width of the interval between consecutive 
values in the sequence in terms of the units given in by.  Ignored if 
by is not a character string or if pos is given. 
 | 
| week.align | 
if not NULL, and by is "weeks",  
you can supply a character 
string (or a number, 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 timeSeriesOptions("time.day.name").  Ignored if 
by is not a character string or if a pos is given. 
 | 
| holidays | 
the holidays for business day sequences. (Ignored if by is not 
a character string or if pos is given.)   
 | 
 
Details
If either x or pos (or the generated sequence) has zero length,  
a zero-length series is returned. 
Value
returns a new time series or a signal whose positions are the passed-in positions or 
positions generated from by, k.by, and so on, and whose  
rows are derived from x as specified in the arguments.
(Can be a subset if how or error.how is "drop".)  
See Also
Examples
a <- signalSeries(pos=1:10, data=data.frame(a = 11:20, b = 5 * (1:10))) 
align(a, c(.2, 3, 7.8, 12), how = "interp", error.how = "nearest") 
a <- timeSeries(pos=as(1:10, "timeDate"), 
		data=data.frame(a = 11:20, b = 5 * (1:10))) 
alpos <- as(c(.2, 3, 7.8, 12), "timeDate") 
alpos@time.zone <- "JST" 
positions(a)@time.zone <- "PST" 
align(a, alpos, matchtol = 1, localzone = TRUE) 
align(a, matchtol=1, localzone=TRUE, by="days", k.by=2)