r - 添加分钟到一天中的时间(hh:mm),如果时间> 24,则从新的一天开始
问题描述
我有一个时间变量为 hh:mm。我想添加数字分钟。如果时间超过 24:00,则应计算新的一天。
例如:时间从 23:45 开始,延迟为 20 分钟,实际开始时间为 00:05。示例数据框:
df <- data.frame(time_start = c("23:45", "23:30", NA, "23:00", "00:30", "02:00"),
delay = c(20, 300, 10, 120, 5, 0)) # in minutes
这是我将分钟转换为时间格式的方法:
library(chron)
library(lubridate)
df$delay<- hms(times(df$delay/24))
但是向 time_start 添加延迟会导致时间 > 24 小时。我该如何从新的一天开始?提前致谢!
解决方案
"1970-01-01"
您可以在时间和格式中添加“中性”日期(例如) as.POSIXct
。然后只需添加延迟(因此以秒为单位* 60
)。要最终显示时间,请使用format
.
df <- transform(df, time_start2=as.POSIXct(
ifelse(is.na(time_start), NA, paste(as.Date("1970-01-01"), time_start))
))
df$time_end <- format(with(df, time_start2 + delay * 60), "%H:%M")
df
# time_start delay time_start2 time_end
# 1 23:45 20 1970-01-01 23:45:00 00:05
# 2 23:30 300 1970-01-01 23:30:00 04:30
# 3 <NA> 10 <NA> <NA>
# 4 23:00 120 1970-01-01 23:00:00 01:00
# 5 00:30 5 1970-01-01 00:30:00 00:35
# 6 02:00 0 1970-01-01 02:00:00 02:00
推荐阅读
- python - 根据最近 3 天的数据动态计算移动平均线 [PySpark]
- reactjs - React/Redux ReferenceError:在初始化之前无法访问“Action”
- php - 在 WooCommerce 单品页面显示总价,商品原价 * 最小数量
- css - 如何将 2 个按钮与一个具有 2 行的按钮对齐
- python - Django - 如何为不同的查询订购查询集?
- apache-flink - Apache Flink,每日轮班的事件时间窗口
- php - 如何在 Larave Blade 中显示有限的文本并删除 html 标签?
- javascript - 将多个列表合并在一起并为搜索栏提供建议
- javascript - 如何将 asp.net mvc 5 与最新的 Paypal checkout .net sdk v2 集成?
- python - 弹性搜索词聚合