Как проверить интервал дат в другом интервале - PullRequest
1 голос
/ 14 марта 2019

Я создал столбцы и строки со следующим кодом

    library(lubridate)    

date1<-ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")  
date2<- ymd_hms("2000-01-01 00:00:00",tz = "US/Eastern")

cols <- lapply(0:14, function(x){
  mapply(function(y,z){
    interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
  }, y = c(0,150,420,600,720,840,1080), z = c(600,570,600,600,600,600,600), SIMPLIFY = FALSE)
})

rows <- lapply(0:14, function(x){
  mapply(function(y,z){
    interval((date2+days(x)+minutes(y)), (date2+days(x)+minutes(y+z)))
  }, y = seq(0,1380,60), rep(c(60),24), SIMPLIFY = FALSE)
})  

Требуется создать матрицу с столбцами и строками, а также с 1 и 0.1, если интервал строки находится в интервале столбца, иначе с 0

1 Ответ

0 голосов
/ 14 марта 2019

Интервалы состоят из start: дата начала, .Data: секунды длительности интервала и tzone: часовой пояс.

Если вы считаете, что tzone стабильно, вы тольконеобходимо восстановить дату начала двух интервалов, которые вы хотите сравнить, и проверить, что один начинается после второго и заканчивается до второго.

Пример:

    isIncluded <- function(a,b){
      (a[[1]]@start>=b[[1]]@start & (a[[1]]@start+seconds(a[[1]]@.Data))<=(b[[1]]@start+seconds(b[[1]]@.Data)))
    }

 library(lubridate)    

date1<-ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")  
date2<- ymd_hms("2000-01-01 00:00:00",tz = "US/Eastern")

cols <- lapply(0:14, function(x){
  mapply(function(y,z){
    interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
  }, y = c(0,150,420,600,720,840,1080), z = c(600,570,600,600,600,600,600), SIMPLIFY = FALSE)
})

rows <- lapply(0:14, function(x){
  mapply(function(y,z){
    interval((date2+days(x)+minutes(y)), (date2+days(x)+minutes(y+z)))
  }, y = seq(0,1380,60), rep(c(60),24), SIMPLIFY = FALSE)
})  
    x <- cols[[1]][1]
    y <- cols[[1]][2]
    isIncluded(x,y) ## Is included x in y? False
    isIncluded(x,x) ## Is included x in x? True

The rest is just populating the matrix!
Best!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...