从数据时间类中提取时间信息并构建时间序列

时间:2016-06-18 03:24:08

标签: r statistics time-series

有一个数据表如下所示:

                               timestamp       id
             785340 2016-04-01 00:01:19.000    4624
             785341 2016-04-01 00:01:19.000    4624
             785342 2016-04-01 00:02:20.000    4624
             794012 2016-04-01 00:02:21.000    4624
             18866  2016-04-01 00:02:28.142    4769
             794198 2016-04-01 00:03:31.000    4624
             18906  2016-04-01 00:03:40.130    4648
             18907  2016-04-01 00:04:40.155    4648
             18908  2016-04-01 00:05:40.157    4648
             797062 2016-04-01 00:05:48.000    4624

该表有两列:timestamp和id。时间戳列是使用df.table$timestamp<-as.POSIXct(df.table$timestamp)生成的。第一列只表示原始表中的行号,因为我根据时间戳重新排序了表。

现在,我想计算给定分钟的ID数,例如第1分钟有2个ID;第2分钟有3个ID等。换句话说,我想从时间戳中提取分钟信息。目标是构建一个时间序列,以一分钟为间隔,位于该1分钟间隔内的id的数量是该值。有没有有效的方法呢?感谢。

2 个答案:

答案 0 :(得分:1)

我们可以在没有任何包裹的情况下做到这一点

aggregate(cbind(count=id)~ts_min, data = 
        transform(df.table, ts_min=format(timestamp, "%M")), FUN = length)
#   ts_min count
#1     01     2
#2     02     3
#3     03     2
#4     04     1
#5     05     2

答案 1 :(得分:0)

您可以使用lubridatedplyr

df.table %>%
    group_by(ts_min = minute(timestamp)) %>%
    summarise(count = n())

## Source: local data frame [5 x 2]
## 
##   ts_min count
##    (int) (int)
## 1      1     2
## 2      2     3
## 3      3     2
## 4      4     1
## 5      5     2