我有一个包含两列出发时间和到达时间的数据框。我想将到达时间与出发时间进行比较,如果到达时间大于出发时间,则将其加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)
})
但是这似乎没有什么区别。我不确定为什么。
使用向量化的ifelse
:
library(dplyr)
library(lubridate)
df %>%
mutate(arrivaltime = ifelse(departuretime > arrivaltime,
arrivaltime + days(1), arrivaltime))