R - 将时间序列分割成仅限时间的箱子

时间:2016-06-06 20:09:43

标签: r datetime time

我有一个时间序列,在正确的POSIX时间内,我想按 分组到时间。我能够把时间装进去,比如几个小时 - 但是这些时间是针对特定日期的(例如:2016-05-15 00:00:002016-05-16 00:00:00被认为是不同的垃圾箱)。

我想将所有00:00:00 - 00:59:59合并到一个垃圾箱中,将所有01:00:00 - 01:59:59放入另一个垃圾箱等等,但我找不到这样做的方法而不包括日期。

有没有人知道如何做到这一点?我愚弄了cutlubridate,但大多无济于事。

3 个答案:

答案 0 :(得分:1)

删除日期并仅处理时间组件?

format(tt, "%H:%M:%S")

将时间组件提取到字符串中,但可以对其进行修改以进一步转换为您的分箱代码处理的任何格式。或者,在装箱之前使日期相同。

答案 1 :(得分:0)

使用更多上下文可以更容易地回答这个问题。我假设一个例子,即:2016-05-15 00:00:00是一个向量或数据框,所以让我们给它一个名字,即:>time<-2016-05-15 00:00:00。您可以通过dim()length()检查尺寸来获取有关格式的一些信息。或者,如果它是带有标题的漂亮矢量,您可以尝试使用names()。这可能使您能够找到需要根据条件进行比较的元素。

答案 2 :(得分:0)

最近有类似的问题。为了处理时间片,我使用了chron包。隐藏到chron,获取时间箱并重命名:

#sample data
tseq<-seq(as.POSIXct("2016-05-15 00:20:00"), by="1 hour", length.out=50)
library(chron)
t<-times(format(tseq, "%T"))  #%T=%H:%M:%S


#group by 1 hour bins
#create 24 bins and cut
mybreaks<-seq(0, 1, 1/24)
out<-tapply(t, cut(t, breaks=mybreaks), length)
#create pretty names
names(out)<-format(as.chron(mybreaks[1:24]), "%T")