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:
- Se
REQUEST_DATE
forUSEFUL_DATE
igual a “SIM” e estiver entre 07:00:00 e 19:00:00, então REQUEST_DATE_FINAL deverá concatenarREQUEST_DATE
eREQUEST_TIME
; - Se
REQUEST_DATE
forUSEFUL_DATE
igual a “SIM” e estiver entre 00:00:00 e 06:59:59, entãoREQUEST_DATE_FINAL
deve-se concatenar REQUEST_DATE e 07:00:00; - Se
REQUEST_DATE
forUSEFUL_DATE
igual a “NÃO”, entãoREQUEST_DATE_FINAL
deverá procurarUSEFUL_DATE
a próxima data igual a “SIM”. Exemplo: seREQUEST_DATE
for igual a 01/01/2024,REQUEST_DATE_FINAL
será 01/02/2024 07:00:00. - 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
.