首页 文章

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

提问于
浏览
0

我有一个数据集,在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 回答

  • 1

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

    相反, sort your data 并使用 sliding window .

    如果您的数据已排序,且时间[x 5] - 时间[x] <6小时,则这些事件会满足您的条件 .

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

相关问题