给索引编号指定时间

时间:2019-04-24 06:45:29

标签: r indexing time

我有一列时间

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

2 个答案:

答案 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')