Como procurar o próximo índice em R

Eu tenho 2 DF’s DF_1 e DF_2:

DF_1 <- data.frame(
  REQUEST_DATE = c("01-01-2024", "02-01-2024" ,"02-01-2024","03-01-2024","04-01-2024","05-01-2024","06-01-2024","12-01-2024","15-01-2024"),
  REQUEST_TIME = c("05:23:52", "20:00:01" ,"22:30:39","15:15:32","17:10:17","07:00:12","11:22:00","18:52:00","08:44:19"))
DF_1$REQUEST_DATE <- as.Date(DF_1$REQUEST_DATE, format = "%d-%m-%Y")
DF_1$REQUEST_TIME <- format(DF_1$REQUEST_TIME, format = "%H:%M:%S")


DF_2 <- data.frame(
  DATE = c(seq(as.Date("2024-01-01"), as.Date("2024-01-15"), by = "days")),
  USEFUL_DATE = c("NO","YES","YES","YES","YES","NO","NO","YES","YES","YES","YES","NO","NO","NO","SIM"),
  NEXT_USEFUL_DATE = c("02-01-2024", "02-01-2024" ,"03-01-2024","04-01-2024","05-01-2024","08-01-2024","08-01-2024","08-01-2024","09-01-2024","10-01-2024","11-01-2024","15-01-2024","15-01-2024","15-01-2024","15-01-2024"))
DF_2$NEXT_USEFUL_DATE <- as.Date(DF_2$NEXT_USEFUL_DATE, format = "%d-%m-%Y")

Quero criar uma nova variável em DF_1 chamada REQUEST_DATE_FINAL , atendendo a seguinte condicional:

  1. Se REQUEST_DATE for USEFUL_DATE igual a “SIM” e estiver entre 07:00:00 e 19:00:00, então REQUEST_DATE_FINAL deverá concatenar REQUEST_DATE e REQUEST_TIME ;
  2. Se REQUEST_DATE for USEFUL_DATE igual a “SIM” e estiver entre 00:00:00 e 06:59:59, então REQUEST_DATE_FINAL deve-se concatenar REQUEST_DATE e 07:00:00;
  3. Se REQUEST_DATE for USEFUL_DATE igual a “NÃO”, então REQUEST_DATE_FINAL deverá procurar USEFUL_DATE a próxima data igual a “SIM”. Exemplo: se REQUEST_DATE for igual a 01/01/2024, REQUEST_DATE_FINAL será 01/02/2024 07:00:00.
  4. Se REQUEST_DATE for USEFUL_DATE igual a “YES” e estiver entre 19:00:01 e 23:59:59, então REQUEST_DATE_FINAL deverá considerar a data imediatamente subsequente como “YES” e concatenar REQUEST_DATE e 07:00:00. Exemplo: se REQUEST_DATE for igual a 01/02/2024 e REQUEST_TIME for igual a 20:00:01, o REQUEST_DATE_FINAL será 01/03/2024 07:00:00:

Veja como DF_1 ficaria o preenchimento com estas condições atendidas:

DF_1 <- DF_1 %>% 
  mutate(REQUEST_DATE_FINAL = c("02/01/2024  07:00:00","03/01/2024  07:00:00","03/01/2024  07:00:00","03/01/2024  15:15:32","04/01/2024  17:10:17","05/01/2024  07:00:12", "08/01/2024  07:00:00","15/01/2024  07:00:00","15/01/2024  08:44:19"))
DF_1$REQUEST_DATE_FINAL <- as.POSIXlt(DF_1$REQUEST_DATE_FINAL, format = "%d-%m-%Y %H:%M:%S")

Não sei como fazer a verificação dessa consulta no DF_2 . Acho que a solução poderia vir de case_when , mas seria necessário usar " for ", mas não sei usar " for " ainda. Imagino que passaria pela pesquisa de índice imediatamente subsequente em DF_2 .