r - 在 R 中为日期添加一天
问题描述
我有一个包含两列出发时间和到达时间的数据框。我想将到达时间与出发时间进行比较,如果到达时间大于出发时间,则将其加 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))
或在基础 R 中:
transform(df, arrivaltime = ifelse(departuretime > arrivaltime,
arrivaltime + 86400, arrivaltime))
推荐阅读
- python - Apache Spark 读取 CSV 文件 - ClassNotFoundException
- javascript - 无序字符串数组与 lodash 的比较
- node.js - 用于 e2e 前端测试的暂存后端
- android - 是否有可能知道哪个视图打开了警报视图?
- regex - 确保字符串不完全匹配的正则表达式
- xamarin.android - 如何在 Xamarin android 中实现线性渐变?
- ios - iOS - 在输入时验证用户 IP 地址
- python - 按子字符串聚合 json 元素
- mongodb - 如何为嵌入文档编写 mongo 查询
- sql - DB2 - 查询一次更新 10000 行