обработка «» объекта даты и времени (POSIXct) в R

#r #datetime #na

#r #datetime #na

Вопрос:

У меня есть df следующим образом:

 df <- data.frame(
      
     value = c(1,2,3,4), 

     date_time = c(2016-11-15 13:30:00, 2016-11-15 14:30:00, <NA>, 2016-11-15 16:30:00)
                   
                     )
  

в моем df переменная date_time является объектом POSIXct, который изначально был символьным объектом, который был преобразован в объект POSIXct с использованием as_datetime пакета lubridate .

Я пытаюсь создать новую переменную с именем date_time_new, где я заменяю значение <NA> в столбце date_time на значение date_time плюс 1:00:00 (добавьте один час к предыдущему времени и замените <NA> на это).

Чего я ожидал, так это следующего:

 df <- data.frame(
   
     value = c(1,2,3,4), 

     date_time = c(2016-11-15 13:30:00, 2016-11-15 14:30:00, <NA>, 2016-11-15 16:30:00),
     
     date_time_new = c(2016-11-15 13:30:00, 2016-11-15 14:30:00, 2016-11-15 15:30:00, 2016-11-15 16:30:00)
                     )
  

Тем не менее, я получаю следующее:

 df <- data.frame(
      
     value = c(1,2,3,4), 

     date_time = c(2016-11-15 13:30:00, 2016-11-15 14:30:00, <NA>, 2016-11-15 16:30:00),
     
     date_time_new = c(2016-11-15 13:30:00, 2016-11-15 14:30:00, <NA>, 2016-11-15 16:30:00)

                   
                     )
  

И это код, который я пишу:

 df <- df %>% mutate(date_time_new = ifelse(is.na(date_time) == TRUE, date_time hms(0,0,1), date_time)
  

Заранее спасибо за ваше время.

Комментарии:

1. Опечатка: = TRUE только с одним = . Однако вам никогда не нужно сравнивать condition == TRUE , условие уже равно TRUE or FALSE .

2. И, пожалуйста, разместите данные правильно, даты и время должны быть в кавычках.

3. Однако, благодаря Rui, я исправил опечатку, когда я использую date_time == «NA», возникает ошибка.

4. Вы должны использовать is.na(date_time) , просто удалите сравнение == TRUE .

5. Однако, спасибо, проблема по-прежнему не исчезает, и я получаю <NA> в новом столбце