你如何每5分钟总结数据框中的因素

时间:2016-04-14 13:35:17

标签: r

 dput(d)
structure(list(TimeStamp = structure(c(1459569739, 1459569739, 
1459569739, 1459569739, 1459569739, 1459569739), class = c("POSIXct", 
"POSIXt"), tzone = ""), Status = structure(c(1L, 2L, 1L, 1L, 
1L, 1L), .Label = c("get", "send"), class = "factor")), .Names = c("TimeStamp", 
"Status"), row.names = c(NA, 6L), class = "data.frame")

这是大数据集的子集。我需要每5分钟计算一次状态栏。状态可以发送或获取。我需要每隔5分钟计算一次状态。

我尝试过这样的事情:

agg<- aggregate(data["Status"], list(fiveMin=cut(data$TimeStamp, "5 mins")),sum)

它抱怨无法计算因素。还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

如果你需要为每个区间都需要这个,并希望零计数某些区间,你可能需要merge这个带有你需要的区间边界的向量,使用seq泛型允许使用by="5 min"的区间规范的POSIXt方法。通过提供的示例,我们只看到一个时间点,因此结果不是特别丰富:

> tapply(d$Status, cut(d$TimeStamp, breaks="5 min"), function(x) sum(x=="get") )
2016-04-01 21:02:00 
                  5 

答案 1 :(得分:1)

我建议您只需转换为宽幅格式,此处为SystemModStamp示例

data.table