我有一个小时向量。例如:
vec.hours <- c("15:52:00", "15:56:00", "12:10:00", "15:12:00", "11:49:00" ,"13:35:00", "14:53:00")
我想四舍五入的小时,以获得新的小时,这将是最近的整个5分钟,像这样。
round.hours <- c("15:50:00", "16:00:00", "12:10:00", "15:10:00", "11:50:00" ,"13:35:00", "14:55:00" )
我试过这个
hour <- strptime(vec.hours , "%H:%M:%S")
round.hour <- round(hour , "mins")
但它不起作用。
在每轮.小时之后,我想做+/-一个小时,例如:
hour.rd <- strptime(round.hours[1] , "%H:%M:%S")
hourM <- hour.rd - 3600
hourP <- hour.rd + 3600
l.tm <- timeSequence(from = hourM, to = hourP,format = "%H-%S-%M",by="5 min",FinCenter = "Europe/Zurich")
所以对于15:50:00我有一个向量,从14:50到16:50.
我不知道如何从vec. hours绕过。
多谢
4条答案
按热度按时间9njqaruj1#
Lubridate包中有非常友好的
round_date
函数。crcmnpdw2#
我将把小时放入datetime对象中,将它们转换为
POSIXlt
,这允许您将分钟作为整数访问,使用整数除法舍入,然后再次提取小时。quhf5bfb3#
从
xts
软件包中,您可以使用align.time
这将把时间戳更改为下一个周期的开始,与OP略有不同,OP将从最近的周期开始。
cunj1qz14#
另一种选择是,基于答案here- round除以300(5分钟 * 60秒),然后将结果乘以300: