Learn R Programming

spacetime (version 1.2-2)

timeMatch: match two (time) sequences

Description

match two (time) sequences, where each can be intervals or instances.

Usage

timeMatch(x, y, returnList = FALSE, ...)

Arguments

x

ordered sequence, e.g. of time stamps

y

ordered sequence, e.g. of time stamps

returnList

boolean; should a list be returned with all matches (TRUE), or a vector with single matches (FALSE)?

...

end.x and end.y can be specified for xts and POSIXct methods

Value

if returnList = FALSE: integer vector of length length(x) with indexes of y matching to each of the elements of x, or NA if there is no match. See section details for definition of match.

if returnList = TRUE: list of length length(x), with each list element an integer vector with all the indexes of y matching to that element of x.

Details

When x and y are of class xts or POSIXct, end.x and end.y need to specify endpoint of intervals.

In case x and y are both not intervals, matching is done on equality of values, using match.

If x represents intervals, then the first interval is from x[1] to x[2], with x[1] included but x[2] not (left-closed, right-open). In case of zero-width intervals (e.g. x[1]==x[2]), nothing will match and a warning is raised. Package intervals is used to check overlap of intervals, using, interval_overlap.

References

http://www.jstatsoft.org/v51/i07/

See Also

over, timeIsInterval, interval_overlap

Examples

Run this code
# NOT RUN {
t0 = as.POSIXct("1999-10-10")
x = t0 +c(0.5+c(2,2.1,4),5)*3600
y = t0 + 1:5 * 3600
x
y
#timeIsInterval(x) = FALSE
#timeIsInterval(y) = FALSE
timeMatch(x,y, returnList = FALSE)
timeMatch(x,y, returnList = TRUE)
#timeIsInterval(y) = TRUE
timeMatch(x,y, returnList = FALSE, end.y = delta(y))
timeMatch(x,y, returnList = TRUE, end.y = delta(y))
#timeIsInterval(x) = TRUE
timeMatch(x,y, returnList = FALSE, end.x = delta(x), end.y = delta(y))
timeMatch(x,y, returnList = TRUE, end.x = delta(x), end.y = delta(y))
#timeIsInterval(y) = FALSE
timeMatch(x,y, returnList = FALSE, end.x = delta(x))
timeMatch(x,y, returnList = TRUE, end.x = delta(x))

x = as.POSIXct("2000-01-01") + (0:9) * 3600
y = x + 1
y[1] = y[2]
x
y
TI = function(x, ti) { 
	timeIsInterval(x) = ti
	x 
}
#timeMatch(TI(y,FALSE),TI(y,FALSE))
#timeMatch(TI(y,TRUE), TI(y,TRUE))
#
#timeMatch(TI(x,FALSE),TI(y,FALSE))
#timeMatch(TI(x,FALSE),TI(y,TRUE))
#timeMatch(TI(x,TRUE), TI(y,FALSE))
#timeMatch(TI(x,TRUE), TI(y,TRUE))
#
#timeMatch(TI(x,FALSE),TI(y,FALSE), returnList = TRUE)
#timeMatch(TI(x,FALSE),TI(y,TRUE), returnList = TRUE)
#timeMatch(TI(x,TRUE), TI(y,FALSE), returnList = TRUE)
#timeMatch(TI(x,TRUE), TI(y,TRUE), returnList = TRUE)

# }

Run the code above in your browser using DataLab