按ID分组,按时间分组(每个活动5分钟以内),在R中查找活动的时差

林内特

有没有一种方法可以让R按ID分组,然后识别时间上的“中断”,然后计算时差?例如:

                ID               TIME              
                A                12/18/2019 4:45:10 AM
                A                12/18/2019 4:45:11 AM
                A                12/18/2019 9:06:59 PM               
                B                12/18/2019 4:14:13 AM
                B                12/18/2019 4:14:14 AM

有人知道找到A的持续时间的方法吗?请注意,这不是difftime问题。我在4:45:10上午进行了某些活动,然后在4:45:11再次进行了。然后,我停止了此活动,并在晚上9:06进行了恢复。是否有代码可以准确地对ID进行分组,然后对时间进行分组,同时检测出时间上的巨大差异以避免错误的值?

这不是正确的解决方案。

                       diff<- data %>%
                       mutate(diff = difftime(as.POSIXct(Endtime, format = "%m/%d/%Y %I:%M:%S %p"), 
                       as.POSIXct(Starttime, format = "%m/%d/%Y %I:%M:%S %p"), units = "secs"))

任何帮助是极大的赞赏。我将继续对此进行研究。谢谢

卡米尔

就像我上面提到的,第一件事是将日期时间转换为日期时间对象。我正在lubridate为此。由于您希望将增量保持在某个阈值内,因此我将阈值持续时间保存为5分钟,可以根据需要进行更改。如果差异不止于此,请加以区别NA

我将分两步进行比较,以便您可以看到原始差异与删除长差异的差异。您可能只想一步就可以做到。

library(dplyr)
library(lubridate)

thresh <- duration(5, units = "minutes")

sample_df %>%
  mutate(TIME = mdy_hms(TIME)) %>%
  group_by(ID) %>%
  mutate(diff1 = TIME - lag(TIME)) %>%
  mutate(delta = if_else(diff1 < thresh, diff1, NA_real_))
#> # A tibble: 10 x 4
#> # Groups:   ID [3]
#>    ID    TIME                diff1      delta  
#>    <chr> <dttm>              <drtn>     <drtn> 
#>  1 A     2019-12-18 04:45:10    NA secs NA secs
#>  2 A     2019-12-18 04:45:11     1 secs  1 secs
#>  3 A     2019-12-18 16:06:59 40908 secs NA secs
#>  4 A     2019-12-18 16:07:01     2 secs  2 secs
#>  5 B     2019-12-18 04:14:13    NA secs NA secs
#>  6 B     2019-12-18 04:14:14     1 secs  1 secs
#>  7 B     2019-12-18 04:14:15     1 secs  1 secs
#>  8 C     2019-12-18 04:59:49    NA secs NA secs
#>  9 C     2019-12-18 04:59:50     1 secs  1 secs
#> 10 C     2019-12-18 04:59:51     1 secs  1 secs

使用dplyr::if_else而不是基ifelse是方便的,因为它使用严格的类型,这有助于确保我将delta列保留为持续时间对象,而不是丢失其时间分量而只是得到一个数值,NA而代替会发生这种情况NA_real_

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择按5分钟周期分组的平均记录

来自分类Dev

按连续时间对用户活动进行分组

来自分类Dev

熊猫时间索引DataFrame按时差分组

来自分类Dev

按熊猫30分钟的空间分组

来自分类Dev

根据R中30分钟或更长时间的时差确定离散事件

来自分类Dev

在SQL Server中将时间字段分组为5分钟

来自分类Dev

按日期分组,而不按时间分组

来自分类Dev

以5分钟为间隔对DataFrame进行分组

来自分类Dev

SQL将5分钟的3行分组为15分钟的单个行

来自分类Dev

每5分钟从SQLite数据库中删除不活动的项目(聊天)

来自分类Dev

mysql / php,按用户ID分组,按时间排序

来自分类Dev

分组ID,按时间排序,最后按先除

来自分类Dev

mysql / php,按用户ID分组,按时间排序

来自分类Dev

在Ubundu Lts 14.4中,使用gnome DE的鼠标在5分钟内没有活动,变得不活动

来自分类Dev

火花时间序列-按10分钟间隔自定义分组:提高性能

来自分类Dev

JavaScript-在活动的指定时间前30分钟关闭活动预定

来自分类Dev

Python Pandas:按日期分组,并按时间戳访问每个分组

来自分类Dev

Python Pandas:按日期分组,并按时间戳访问每个分组

来自分类Dev

如何从具有用户登录日期和时间的表中获取最近20分钟的活动记录

来自分类Dev

如何按r中的时差对数据进行分组?

来自分类Dev

如何基于熊猫时间序列中的5分钟间隔创建组ID?

来自分类Dev

每隔5分钟拍摄一次活动窗口的屏幕截图,并将其保存在文件中

来自分类Dev

如何按时间对R中的XTS对象进行分组?

来自分类Dev

Postgres按连续事件分组,如果间隔超过10分钟,则中断

来自分类Dev

当datetime列按20分钟分组时如何聚合字典列

来自分类Dev

如何将数据库记录分组为15分钟的时间间隔

来自分类Dev

每30分钟分组一次时间戳

来自分类Dev

将时间差不大于15分钟的行分组

来自分类Dev

在R中以5分钟的时间间隔创建一个24小时向量

Related 相关文章

  1. 1

    选择按5分钟周期分组的平均记录

  2. 2

    按连续时间对用户活动进行分组

  3. 3

    熊猫时间索引DataFrame按时差分组

  4. 4

    按熊猫30分钟的空间分组

  5. 5

    根据R中30分钟或更长时间的时差确定离散事件

  6. 6

    在SQL Server中将时间字段分组为5分钟

  7. 7

    按日期分组,而不按时间分组

  8. 8

    以5分钟为间隔对DataFrame进行分组

  9. 9

    SQL将5分钟的3行分组为15分钟的单个行

  10. 10

    每5分钟从SQLite数据库中删除不活动的项目(聊天)

  11. 11

    mysql / php,按用户ID分组,按时间排序

  12. 12

    分组ID,按时间排序,最后按先除

  13. 13

    mysql / php,按用户ID分组,按时间排序

  14. 14

    在Ubundu Lts 14.4中,使用gnome DE的鼠标在5分钟内没有活动,变得不活动

  15. 15

    火花时间序列-按10分钟间隔自定义分组:提高性能

  16. 16

    JavaScript-在活动的指定时间前30分钟关闭活动预定

  17. 17

    Python Pandas:按日期分组,并按时间戳访问每个分组

  18. 18

    Python Pandas:按日期分组,并按时间戳访问每个分组

  19. 19

    如何从具有用户登录日期和时间的表中获取最近20分钟的活动记录

  20. 20

    如何按r中的时差对数据进行分组?

  21. 21

    如何基于熊猫时间序列中的5分钟间隔创建组ID?

  22. 22

    每隔5分钟拍摄一次活动窗口的屏幕截图,并将其保存在文件中

  23. 23

    如何按时间对R中的XTS对象进行分组?

  24. 24

    Postgres按连续事件分组,如果间隔超过10分钟,则中断

  25. 25

    当datetime列按20分钟分组时如何聚合字典列

  26. 26

    如何将数据库记录分组为15分钟的时间间隔

  27. 27

    每30分钟分组一次时间戳

  28. 28

    将时间差不大于15分钟的行分组

  29. 29

    在R中以5分钟的时间间隔创建一个24小时向量

热门标签

归档