R: match two (time) sequences

timeMatch {spacetime} | R Documentation

## 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

### 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.

### 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`.

### Author(s)

Edzer Pebesma

### References

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

### See Also

over, timeIsInterval, interval_overlap

### Examples

    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)

[Package spacetime version 1.2-2 Index]