【问题标题】:How to Count Number of Events Currently Elapsing When a New Event Begins from BeginTime and EndTime [closed]当新事件从 BeginTime 和 EndTime 开始时如何计算当前经过的事件数
【发布时间】:2016-12-30 12:30:41
【问题描述】:

这是一些示例数据:

Begin = c("10-10-2010 12:15:35", "10-10-2010 12:20:52", "10-10-2010 12:23:45", "10-10-2010 12:25:01", "10-10-2010 12:30:29")

End = c("10-10-2010 12:24:23", "10-10-2010 12:23:30", "10-10-2010 12:45:15", "10-10-2010 12:32:11", "10-10-2010 12:45:05")

df = data.frame(Begin, End)

我想在新事件开始时计算当前尚未完成的事件数量并将其记录在新列中。因此,对于这个特定示例,所需的最终结果将是具有以下值的列:0、1、1、1、2

我需要这个用 R 编码。我找到了一种在 SAS 中使用滞后函数进行计算的方法,但由于各种原因我不喜欢这种方法,并且希望在 R 中效果更好。

实际上我有 36,000 行,这是在处理停电问题。

有人让我发布我尝试过的东西,嗯。正如我所说,在 SAS 中,我成功地使用了滞后功能。该方法效果不佳,因为您必须硬编码大量并且效率不高。

在 R 中,我尝试按开始时间和数字从 1-36k 排序,然后按结束时间和数字从 1-36k 排序,然后尝试一些 ifthen 逻辑,但碰壁了,我认为这也行不通。

我的问题被告知要进行编辑,以便再次提供给社区。我能想象的唯一原因是因为有太多可能的答案。好吧,我没有编辑任何东西,但我添加了这段摘录。在编程中,任何不是最简单的问题的“好”问题都会有很多答案(但即使是那些也有很多答案,尤其是在 R 中)。这个问题是我知道很多人会一直问的一个问题,坦率地说,很难在网上找到关于如何在 R 中做到这一点的信息来源。这个问题的答案很简短,而且效果很好。不向社区提供这个问题将是一种耻辱,因为 stackoverflow 的目的是获得一系列重要问题,因此当人们按照该问题的思路搜索内容时,基本上他们的名字将被拉起。

【问题讨论】:

  • 请发布您迄今为止尝试过的内容以及我们可以帮助解决的一些具体问题。否则,这看起来像是一个“请为我编写代码”的问题,不会得到很好的回应。
  • 请勿以图片形式发布您的数据,请了解如何提供reproducible example
  • 我说了我已经尝试过并且与阿里成功的事情,谢谢。很抱歉,您认为这看起来像是一个请为我编写代码的问题,我希望其他人选择不要恶意回应它。我认为这只会说明这个社区的一些情况,因为我相信它显然比许多其他人更难操纵日期时间。我希望其他人不要认为你应该在提问之前为自己辩护。

标签: r date datetime events data-mining


【解决方案1】:

也许这会有所帮助:

library(lubridate)
library(data.table)
df <- as.data.frame(lapply(df, dmy_hms))
dt <- as.data.table(df)
setkey(dt,Begin,End)[,id:=.I]
merge(dt, foverlaps(dt,dt)[id>i.id,.N,by="Begin,End"], all.x=T)[,id:=NULL][is.na(N),N:=0][]
# Begin                 End N
# 1: 2010-10-10 12:15:35 2010-10-10 12:24:23 0
# 2: 2010-10-10 12:20:52 2010-10-10 12:23:30 1
# 3: 2010-10-10 12:23:45 2010-10-10 12:45:15 1
# 4: 2010-10-10 12:25:01 2010-10-10 12:32:11 1
# 5: 2010-10-10 12:30:29 2010-10-10 12:45:05 2

【讨论】:

  • 谢谢!午饭后我会看看这个。看起来很有希望:) 我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多