我有一列时间
a = times('00:00:00', '00:15:00', '01:45:00', '23:45:00')
我想给他们一个基于15分钟间隔的索引。例如,由于24小时内有96分钟的15分钟间隔,因此00:00:00将为1,00:15:00将为2,而23:45:00将为96。
所以我想要的结果是:
1 2 8 96
答案 0 :(得分:2)
另一个有趣的主意
cumsum(c(1, diff(strptime(a, format = "%T")) / 15))
#[1] 1 2 8 96
答案 1 :(得分:1)
在将cut
转换为时间对象并将级别转换为数字之后,我们可以将breaks
与"15 mins"
中的a
一起使用。
as.integer(cut(strptime(a, format = "%T"), breaks = "15 mins"))
#[1] 1 2 8 96
Same也可以与as.POSIXct
as.integer(cut(as.POSIXct(a, format = "%T"), breaks = "15 mins"))
使用lubridate
,我们可以转换为秒,然后执行
library(lubridate)
period_to_seconds(hms(a))/(15*60) + 1
或与minute
minute(as.period(hms(a), "minutes"))/15 + 1
根据持续时间取整值,您可能需要ceiling
/ floor
。
数据
a <- c('00:00:00', '00:15:00', '01:45:00', '23:45:00')