R - 群集x y时间段内的事件数量

时间:2014-07-30 15:09:09

标签: r date time cluster-analysis

我有一个数据集,在63年内记录了59,000个条目,我需要识别具有以下标准的事件集群:

6小时内发生6次或更多事件

每个事件都有一个唯一的ID,时间HH:MM:SS和日期DD:MM:YY,理想情况下,输出将具有集群ID,发生在每个集群中的事件,以及开始和结束时间和日期。

考虑到R中的问题,我们需要查看每个日期/时间并计算在接下来的6个小时内的事件数量,如果数量为6或更大,保存事件ID,如果不移动到下一个日期并执行相同的任务。我已经采用了一个只包含EventID,Date,Time和Year的数据提取。

https://dl.dropboxusercontent.com/u/16400709/StackOverflow/DataStack.csv

如果我在此期间提出任何建议,我会在下面发布。

更新:休息一下,想一想这个问题我有一个新的方法。

在每个事件的日期/时间添加6个小时,然后计算在开始结束时间内的事件数,如果有6个或更多事件采用eventID并为其分配clusterID。然后转到下一个事件并重复59k次循环。

1 个答案:

答案 0 :(得分:1)

不要使用群集。这是错误的工具。错误的用语。你不是在寻找抽象的"集群",而是更简单,更明确的东西。特别是,您的数据是1维的,这使得事物比聚类中无处不在的多变量情况容易得多。

相反,对数据进行排序并使用推送窗口

如果您的数据已排序,则时间[x + 5] - 时间[x] < 6个小时,然后这些事件满足您的条件。

排序为O(n log n),但经过高度优化。剩余部分是O(n)一次性传递数据。这将击败每一个聚类算法,因为它们不会利用您的数据特征。