有一个数据表如下所示:
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的数量是该值。有没有有效的方法呢?感谢。
答案 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)
您可以使用lubridate
和dplyr
。
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