рассчитать перекрытие в метке времени в R - PullRequest
0 голосов
/ 18 июня 2019

Я хочу вычислить перекрытие между двумя диапазонами временных отметок с помощью функции "перекрытия".И сохраните, если есть перекрытие, и интервал перекрытия в таблице данных.

Я пытался работать с функцией, чтобы понять, как она работает, пробуя этот код.

> a = c(as.Date("2012-01-03 18:00:00"), as.Date("2012-02-03 18:00:00"))
> b = c(as.Date("2012-02-01 19:00:00"), as.Date("2012-03-03 18:00:00"))
> Overlap(a,b)
[1] 2

Проблема в том, что учитываются только дни, а не время.Я бы тоже хотел использовать время.

1 Ответ

0 голосов
/ 18 июня 2019

Мы можем применять as.POSIXct, когда нужно учитывать время, а не as.Date.

a <- as.POSIXct(c("2012-01-03 18:00:00", "2012-02-03 18:00:00"))
b <- as.POSIXct(c("2012-02-01 19:00:00", "2012-03-03 18:00:00"))

При преобразовании as.POSIXct в numeric получаем секунды; Доказательство:

as.POSIXct(as.numeric(a), origin="1970-01-01")  # origin is mostly "1970-01-01"
# [1] "2012-01-03 18:00:00 CET" "2012-02-03 18:00:00 CET"

Таким образом, мы могли бы вычислить intersect из a и b, взять range и преобразовать его обратно as.POSIXct, чтобы получить перекрытие.

as.POSIXct(range(intersect(as.numeric(a)[1]:as.numeric(a)[2], 
                           as.numeric(b)[1]:as.numeric(b)[2])), origin="1970-01-01")
# [1] "2012-02-01 19:00:00 CET" "2012-02-03 18:00:00 CET"

Это также должно работать с вашей Overlap() функцией (не тестировалась).

...