【发布时间】:2016-07-06 19:01:00
【问题描述】:
我有一个大的时间序列数据文件,如下所示。数据集涵盖多年,增量为 15 分钟。一个小子集如下所示:
uniqueid time
a 2014-04-30 23:30:00
a 2014-04-30 23:45:00
a 2014-05-01 00:00:00
a 2014-05-01 00:15:00
a 2014-05-12 13:45:00
a 2014-05-12 14:00:00
b 2014-05-12 13:45:00
b 2014-05-12 14:00:00
b 2014-05-12 14:30:00
复制上面的内容:
time<-c("2014-04-30 23:30:00","2014-04-30 23:45:00","2014-05-01 00:00:00","2014-05-01 00:15:00",
"2014-05-12 13:45:00","2014-05-12 14:00:00","2014-05-12 13:45:00","2014-05-12 14:00:00",
"2014-05-12 14:30:00")
uniqueid<-c("a","a","a","a","a","a","b","b","b")
mydf<-data.frame(uniqueid,time)
我的目标是计算每个连续时间流中每个唯一 ID 的行数。连续时间跨度是指连续每 15 分钟标记一个唯一 ID(例如 id A,从 30.04.14 23.30 小时到 01.05.14 00.15 小时 - 因此为 4 行),但当此流为 15 -分钟迭代被中断(在 01.05.14 00:15 之后,它没有在 01.05.14 00:30 标记,因此它被中断),它应该将下一个时间戳记为新的连续时间流的开始,并再次计算行,直到此流程再次中断。时间是 POSIX。
如您在上面的示例中所见;连续的时间流可能涵盖不同的日子、不同的月份或不同的年份。我有许多唯一的 id(如前所述,一个非常大的文件),所以我正在寻找一种我的计算机可以处理的方式(循环可能不起作用)。
我正在寻找类似的输出:
uniqueid flow number_rows
a 1 4
a 2 2
b 3 2
b 4 1
我研究了一些时间包(例如 lubridate),但鉴于我有限的 R 知识,我什至不知道从哪里开始。
我希望一切都清楚 - 如果没有,我很乐意尝试进一步澄清。非常感谢您!
【问题讨论】: