将时间戳(/ POSIXcts)的向量除以R中的n分钟间隔

时间:2014-06-06 22:36:00

标签: r date timestamp posixct

我有一个巨大的时间戳矢量(double中的R类型)。这是我data.table对象中的一列。我想将这些观察结果分成n分钟的间隔 - 我希望有一个character向量表示例如此时间间隔的第一个值的时间。

例如,对于7分钟(7 * 60秒)的间隔,我可能会:

> ts <- c(1400132530, 1400134830)
> ts.intv <- ts - (ts %% (7*60))
> 
> POSIXct.intv <- as.POSIXct(ts.intv, origin="1970-01-01")
> format(POSIXct.intv, "%H:%M:%S")
[1] "07:36:00" "08:18:00"

我试图在这个过程中使用sapply操作,但它比我的时间戳向量(长度~15kk)非常耗时。谁能提出更好的解决方案?有内置功能吗?

1 个答案:

答案 0 :(得分:4)

cut

怎么样?
(ts <- seq.POSIXt(from=Sys.time(), by="2 mins", length.out=8))
# [1] "2014-06-07 00:51:10 CEST" "2014-06-07 00:53:10 CEST"
# [3] "2014-06-07 00:55:10 CEST" "2014-06-07 00:57:10 CEST"
# [5] "2014-06-07 00:59:10 CEST" "2014-06-07 01:01:10 CEST"
# [7] "2014-06-07 01:03:10 CEST" "2014-06-07 01:05:10 CEST"
groups <- cut.POSIXt(ts, breaks="7 mins")
levels(groups)
# [1] "2014-06-07 00:48:00" "2014-06-07 00:55:00"