%overlaps% {DescTools} | R Documentation |

## Determines If And How Extensively Two Date Ranges Overlap

### Description

%overlaps% determines if two date ranges overlap at all and returns a logical value. Interval returns the number of days of the overlapping part of the two date periods. Inspired by the eponymous SQL-functions.

### Usage

```
x %overlaps% y
Overlap(x, y)
Interval(x, y)
```

### Arguments

`x` |
range 1, vector of 2 numeric values or matrix with 2 columns, the first defining the left point the second the right point of the range. |

`y` |
range 2, vector of 2 numeric values or matrix with 2 columns, the first defining the left point the second the right point of the range. |

### Details

`%overlaps%`

returns `TRUE`

or `FALSE`

depending on if the two ranges overlap. The function `Overlap`

returns the range of the overlapping region as numeric value. This will be 0, if the ranges do not overlap.

`Interval`

returns the width of the empty space between 2 ranges. Again this will be 0 if the ranges overlap.

To handle overlapping ranges there are 4 cases to consider:

range a: |--------------| range b: |-----| range c: |--------| range d: |-----| 1 2 3 4 5 6 7 8

Ranges a and b overlap, the function `Overlap`

will return the absolute value of the overlapping region (which will be 3 - 2 = 1 in this case). The result will be the same for `Overlap(a, b)`

and `Overlap(b, a)`

.

`Interval`

will have a direction. Ranges b and c do not overlap, `Overlap`

will return 0, `%overlaps%`

FALSE. `Interval`

will return 2 for the case `Interval(a, b)`

and -2 for `Interval(b, a)`

.

This functions can be of value, if one has to decide, whether confidence intervals overlap or not.

### Value

returns a logical vector (match or not for each element of x).

Interval and Overlap return a numeric vector.

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

similar operators: `Between`

, `%like%`

for calculating the overlapping time: `difftime`

### Examples

```
as.Date(c("2012-01-03", "2012-02-03")) %overlaps%
as.Date(c("2012-03-01", "2012-03-03"))
as.Date(c("2012-01-03", "2012-02-03")) %overlaps%
as.Date(c("2012-01-15", "2012-01-21"))
Interval(as.Date(c("2012-01-03", "2012-02-03")), as.Date(c("2012-03-01", "2012-03-03")))
# both ranges are recyled if necessary
as.Date("2012-01-03") %overlaps% as.Date(c("2012-03-01", "2012-03-03"))
# works with numerics as well
c(1, 18) %overlaps% c(10, 45)
```

*DescTools*version 0.99.55 Index]