【问题标题】:Quantifying Logged Non-activity in R-- Overlapping logged events量化 R 中记录的非活动——重叠记录的事件
【发布时间】:2016-02-15 20:29:55
【问题描述】:

更新:这似乎在 SQL 论坛中得到了很好的描述——如何考虑时间范围之间的差距(其中许多是重叠的。)所以我可能不得不求助于 SQL 来快速解决这个问题,但我很惊讶它不能在“R”中完成。看起来间隔使用的对象几乎一直到那里,但在慢循环之外,似乎很难应用于向量范围的分析。如果您有任何想法,请告诉我,但这里是问题的描述及其在 SQL 中的解决方案:

https://www.simple-talk.com/sql/t-sql-programming/calculating-gaps-between-overlapping-time-intervals-in-sql/

....我想做的是从日志中列出非活动时间列表,然后对其进行过滤以显示最少的非活动时间。

 1/17/2012 0:15 1/17/2012 0:31
 1/20/2012 0:21 1/20/2012 0:22
 1/15/2013 1:08 1/15/2013 1:10
 1/15/2013 1:08 1/15/2013 1:10
 1/15/2013 7:39 1/15/2013 7:41
 1/15/2013 7:39 1/15/2013 7:41
 1/16/2013 1:11 1/16/2013 1:15
 1/16/2013 1:11 1/16/2013 1:15

我打算将结束时间延迟到开始行并计算差异,但后来很明显有重叠的活动。我还尝试了“价格合适”类型匹配以获得最接近的结束时间......当然,如果事情同时进行,这并不能保证未完成的同时任务没有任何活动。

我目前有日期时间输入和日期时间输出列。我希望有比获取数百万个条目并使用 seq.POSIXt 编写每个有活动的单独分钟更好的主意?但即使这样似乎也不太可行。但似乎有一些简单的方法可以识别最小时间间隔,无论是 5 分钟还是 30 分钟。有什么建议吗?

【问题讨论】:

  • 我不明白问题是什么(以及预期的输出)。能改一下吗?
  • 肯尼,是的——但不幸的是,我无法弄清楚如何在 R 中做到这一点。也许它需要一个循环......?
  • docendo,我想做的是想出一种方法来识别和量化用户活动日志中表示的非活动(最小长度)。
  • 谢谢 Kenney——我知道在其他语言中我会如何做到这一点,但“R”中的口头禅似乎总是“永不循环”,而且它往往会导致性能问题..但它毕竟可能最终成为一个循环..

标签: r dplyr xts zoo lubridate


【解决方案1】:

假设1/17/2012 00:15 是您数据集中的第一个值,我会将您的数据转换为两列,每列将包含自此时间戳以来的分钟数

ie using the first 3 rows of your data as an example
    _______|_______
    0      | 16
    4323   | 4324
    528882 | 528884
    ...    | ...

将这两列相减将告诉您活动发生的分钟数,然后您可以简单地将其反转,您将得到您的非活动。

【讨论】:

  • 据我所知,因为它们重叠,所以它不起作用。我正在考虑在几年内做每一分钟,并针对多个重叠间隔测试它们......
  • 如果不以某种方式查看您的代码,就有点难以帮助抱歉
  • 我不太好——我真的很感谢你的帮助。在我注意到数据点重叠之前,这是我最初的解决方案——所以我绝对认为这是一个很好的解决方案!
  • 根据您如何进行重叠检测,您应该能够捕捉到它。即,如果您使用 unique() 获取所有独特的活动时间,然后使用 ActiveTimes <- TimeSpan[ - which(TimeSpan == ActiveTimes)] 反转它们,您应该能够忽略双倍
  • 这是一个非常好的主意,但我在执行它时遇到的问题是起点和终点只是很少加倍,而是重叠。因此,假设某人在上午 10:30-11:45 之间做了一些可记录的事情,但在上午 10:40-11am 做了其他事情。如果我正在寻找最接近上午 10:30 的注销,那将是上午 11 点,因此该日志将被低估 45 分钟。或者,如果我只是从字面上计算两者之间的秒数,它会将“忙碌”时间夸大 20 分钟,因为它不会将第二对与第一对重叠。 -j
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
相关资源
最近更新 更多