Добавление дня к дате в R - PullRequest
0 голосов
/ 17 июня 2020

У меня есть фреймворк с двумя столбцами: время отправления и время прибытия. Я хочу сравнить время прибытия со временем отправления, и в случае, если время прибытия больше, чем время отправления, добавьте к нему 1.

departuretime         arrivaltime
<S3: POSIXct>         <S3: POSIXct>
2019-03-04 23:32:00 2019-03-04 03:55:00         
2019-03-05 01:38:00 2019-03-04 05:27:00         
2019-03-04 22:59:00 2019-03-04 06:45:00         
2019-03-04 22:40:00 2019-03-04 00:01:00         
2019-03-04 22:13:00 2019-03-04 00:08:00         
2019-03-04 22:38:00 2019-03-04 00:08:00         
2019-03-05 00:36:00 2019-03-04 04:19:00         
2019-03-04 22:12:00 2019-03-04 00:19:00         
2019-03-04 23:19:00 2019-03-04 02:13:00         
2019-03-04 21:27:00 2019-03-04 00:21:00

Я пробовал приведенный ниже код

 mutate(if(departuretime > arrivaltime) {
    arrivaltime = ymd_hms(arrivaltime) + days(1)
  })

Но похоже, это не имеет никакого значения. Не знаю почему.

1 Ответ

0 голосов
/ 17 июня 2020

Используйте ifelse, который векторизован:

library(dplyr)
library(lubridate)

df %>%
   mutate(arrivaltime = ifelse(departuretime > arrivaltime, 
                           arrivaltime + days(1), arrivaltime))

Или в базе R:

transform(df, arrivaltime = ifelse(departuretime > arrivaltime, 
                               arrivaltime + 86400, arrivaltime))
...