Объединение данных, где время находится в пределах интервала

Не хотел бы видеть другие решения, но я также не понимаю, почему я получаю неполный и неправильный ответ. (смазывать:: интервал становится неправильным)

Например, del_time[1,] не находится в интервале времени [3,]. Цель состоит в том, чтобы присоединить "статус" к del_time, где время находится в интервале.

Пример данных:

library(lubridate)
library(dplyr)

ti <- now()

times <- tibble(time1 = c(ti + 3600, ti + 7200, ti + 10800, ti + 14000),
                    time2 = time1 + 3599, status = c("One", "Two", "Three", "Four"))

del_time <- tibble(time = times$time1 + 1750)

Код:

FUN1 <- function(x,y){

  x <- ymd_hms(x)
  which_int <- x %within% interval(start = y[[1]], end =  y[[2]])
  out <- as.character(y[which_int, 3])
  return(out)
}


del_time$status <- apply(del_time[, 1], 1, FUN1, y =  times)
del_time

1 ответ

Решение:

which_int <- x %within% interval(start = ymd_hms(y[[1]]), end =  ymd_hms(y[[2]]))

Однако я бы не отказался от альтернативных решений.

Другие вопросы по тегам