Используя функцию mutate и делая условные операторы, r - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть интервалы дат и периодов времени, которые я хочу включить в условное утверждение. Проблема лежит где-то в «дневном» определении. Я не думаю, что будет круглосуточно включать время утра и вечера - какой синтаксис я мог бы использовать вместо этого?

## 6.2 Narrative (Intervals) 
# Interval 1
  ## Interval Date Start  "2019-09-23"
  ## Interval Date End    "2019-10-05"
  ## Day Start Time       "21:01:00"
  ## Day End Time         "12:01:00"
  ## Night Start Time     "12:00:00"
  ## Night End Time       "21:00:00"
  ## Other Time
# Interval 2
  ## Interval Date Start  "2019-10-05"
  ## Interval Date End    "2019-10-30"
  ## Day Start Time       "21:01:00"
  ## Day End Time         "12:29:00"
  ## Night Start Time     "12:30:00"
  ## Night End Time       "21:00:00"
  ## Other Time

##6.3 Applying the tidyverse 
# Using the "case_when" function in the tidyverse in the place of a loop

    dml <- dml %>% mutate(period=case_when(
                         (ObservationDate >= "2019-09-23") 
                          & (ObservationDate <="2019-10-05") 
                          & (ObservationTime >= "12:00:00") 
                          & (ObservationTime <="21:00:00") ~"night",

                          (ObservationDate >= "2019-10-05")
                          & (ObservationDate <= "2019-10-30")
                          & (ObservationTime >= "12:30:00") 
                          & (ObservationTime <="21:00:00") ~"night",

                          (ObservationDate >= "2019-09-23") 
                          & (ObservationDate <="2019-10-05")
                          & (ObservationTime >= "21:01:00") 
                          & (ObservationTime <="11:59:00") ~"day",

                          (ObservationDate >= "2019-10-05")
                          & (ObservationDate <= "2019-10-30")
                          & (ObservationTime >= "21:01:00")
                          & (ObservationTime <= "12:29:00") ~"day",
                          TRUE ~"other"
                        )
                      ) 

1 Ответ

0 голосов
/ 21 апреля 2020
r2evans & akrun - thanks for following up - I realized I need an "or" syntax to complete the 24hours in a day- thanks           
     dml <- dml %>% mutate(period=case_when(
                          (ObservationDate >= "2019-09-23") 
                          & (ObservationDate <="2019-10-05") 
                          & (ObservationTime >= "12:00:00") 
                          & (ObservationTime <="21:00:00") ~"night",

                          (ObservationDate >= "2019-10-05")
                          & (ObservationDate <= "2019-10-30")
                          & (ObservationTime >= "12:30:00") 
                          & (ObservationTime <="21:00:00") ~"night",

                          (ObservationDate >= "2019-09-23") 
                          & (ObservationDate <="2019-10-05")
                          & ((ObservationTime >= "21:01:00") 
                          | (ObservationTime <="11:59:00")) ~"day",

                          (ObservationDate >= "2019-10-05")
                          & (ObservationDate <= "2019-10-30")
                          & ((ObservationTime >= "21:01:00")
                          | (ObservationTime <= "12:29:00")) ~"day",
                          TRUE ~"other"
                        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...