如何从分钟级时间向量中提取自定义时间间隔?
自定义时间间隔分组实现方案
先回顾你的基础代码:
# 生成1分钟间隔的时间向量 m1 <- seq(as.POSIXct("2020-02-20 09:00:00"), as.POSIXct("2020-02-20 18:00:00"), by="min") # 加载lubridate包 library(lubridate)
要提取自定义时间间隔的分组标记,核心是把每个时间点映射到所属的间隔区间,以下是对应res矩阵的完整实现:
res <- cbind( min1 = minute(m1), # 原分钟数 min5 = (minute(m1) %/% 5) * 5, # 5分钟间隔:取当前分钟所属的5分钟区间起始分钟 hour1 = hour(m1), # 原小时数 hour6 = (hour(m1) %/% 6) * 6 # 6小时间隔:取当前小时所属的6小时区间起始小时 ) # 查看前几行结果验证 head(res)
其他自定义间隔的扩展实现
- 15分钟间隔:把代码里的
5换成15即可:min15 = (minute(m1) %/% 15) * 15 - 12小时间隔:把代码里的
6换成12:hour12 = (hour(m1) %/% 12) * 12
用lubridate的floor_date函数实现(更直观)
如果觉得整除计算不够直观,也可以用floor_date函数直接将时间向下取整到指定间隔,再提取对应时间单位:
res <- cbind( min1 = minute(m1), min5 = minute(floor_date(m1, "5 mins")), hour1 = hour(m1), hour6 = hour(floor_date(m1, "6 hours")) )
两种方式效果一致,可根据习惯选择。
内容的提问来源于stack exchange,提问作者mr.T
相关产品推荐
相关产品推荐

