如何在R中的时间序列中创建指示开始和结束时间段的变量

用户名

我想计算某人何时开始和停止在博客上发表评论。我的数据集在第1列中有一个用户ID,其后是6列,每列代表一个时间段内的评论数。我想创建一列(“活动”)以标识出现非零值的第一个期间。我还想创建一列(“无效”),该列标识第一个周期,其中零后面跟随着一个非零值,并且在随后的周期中仅后面跟随着零。

这是10行样本数据:

structure(list(userid = c(199782L, 30982L, 27889L, 108358L, 29620L, 
229214L, 37531L, 711L, 30516L, 32360L), Period1 = c(0L, 1L, 43L, 
0L, 189L, 0L, 0L, 142L, 26L, 0L), Period2 = c(0L, 36L, 40L, 18L, 
32L, 0L, 6L, 55L, 159L, 0L), Period3 = c(0L, 68L, 25L, 110L, 
1L, 0L, 31L, 14L, 32L, 0L), Period4 = c(0L, 45L, 0L, 91L, 0L, 
0L, 54L, 1L, 0L, 0L), Period5 = c(93L, 27L, 57L, 0L, 0L, 35L, 
79L, 4L, 0L, 26L), Period6 = c(132L, 47L, 37L, 4L, 0L, 186L, 
50L, 2L, 0L, 191L)), .Names = c("userid", "Period1", "Period2", 
"Period3", "Period4", "Period5", "Period6"), row.names = 175:184, class = "data.frame")

接下来是5行的选定输出。缺少“ inactive”的值表示用户仍处于活动状态。

userid, active, inactive
199782, 5
27889, 1
29620, 1, 3
37531, 2
30516, 1, 3

有人可以为我指出正确的方法吗?谢谢!

研究

使用data.table糖的语法和(后投入长格式)通过ID的组进行:

library(data.table)
melt(setDT(dat),id.vars='userid')[,
    list(active=min(which(value>0)),
         inactive={ mm = cumsum(value)
                    ## treat the case where we have leading 0 in value
                    mm = duplicated(mm[mm!=0])
               ## Note the use of integer here otheriwse data.table will complain about types...
                       ifelse(any(mm) && max(which(mm))==length(value),
                               min(which(mm)),NA_integer_)
         }),userid]

     userid active inactive
 1: 199782      5       NA
 2:  30982      1       NA
 3:  27889      1       NA
 4: 108358      2       NA
 5:  29620      1        4
 6: 229214      5       NA
 7:  37531      2       NA
 8:    711      1       NA
 9:  30516      1        4
10:  32360      5       NA

说明,针对每个ID:

  1. 活动列只是第一个值的索引,不为null
  2. 非活动列比较棘手,它是重复的值在值的累积总和中的最小索引。我们应该从此累加总和中删除空值,以避免该值以零开头的情况。这里有个简单的例子:

     cumsum(c(1,0,1))  
    [1] 1 1 2
          _    ## we want to extract the index of one here
    min(which(duplicated(cumsum(c(1,0,1)))))
    2 
    

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将带有开始和结束时间列的行转换为R中的时间序列格式?

来自分类Dev

如何在Google Calendar API的事件对象中设置开始时间和结束时间

来自分类Dev

从开始和结束时间在PHP中分配20分钟的时间段

来自分类Dev

从开始和结束时间在PHP中分配20分钟的时间段

来自分类Dev

基于二进制开始时间和结束时间列在 R 中为时间序列数据创建唯一键

来自分类Dev

在熊猫datetime列中找到值之间的中点,并根据中点创建开始和结束时间段列

来自分类Dev

根据R中的多个条件(dplyr,lubridate)创建开始和结束时间列

来自分类Dev

如何在ASP.NET C#中获取会话的开始和结束时间

来自分类Dev

时间戳python中昨天的开始和结束时间

来自分类Dev

由数据框中的列定义的时间段的开始和结束日期

来自分类Dev

如何在JavaScript中获取指定时区的一天的UTC开始时间和结束时间?

来自分类Dev

Python - 如何在csv中获取带有开始和结束时间列的“持续时间”列?

来自分类Dev

如何使用ggplot2按时间段为R中的时间序列图聚合变量

来自分类Dev

如何从mysql中的开始时间和结束时间获取记录

来自分类Dev

如何在表格内开始时间和结束时间之间的剩余时间创建实时倒数效果?

来自分类Dev

如何在R中按28天时间段和地区分组

来自分类Dev

在MySQL中存储每日事件的开始和结束时间

来自分类Dev

如何从 FullCalendar 中的事件获取弹出消息中事件的开始和结束时间?

来自分类Dev

如何基于R中的持续时间(显示开始和结束时间以及以小时和分钟为单位的持续时间)来计算最长日期

来自分类Dev

如何通过使用R中的时间序列中的第一个和最后一个时间戳记来定义相遇时间段

来自分类Dev

在R中按组检查重叠的开始和结束时间

来自分类Dev

如何调整Outlook中重新出现的会议的开始和结束时间?

来自分类Dev

限制Jquery动态时间选择器中的开始时间和结束时间

来自分类Dev

如何获得期间的开始时间和结束时间?

来自分类Dev

在R中创建开始时间和结束时间时,是否有办法确保将日期分组在一起?

来自分类Dev

如何基于开始时间和结束时间值创建动态表?

来自分类Dev

将活动开始时间和结束时间转换为R dplyr / tidyr中多个组的合并数据

来自分类Dev

如何在Android中比较开始时间和结束时间?

来自分类Dev

如何在MongoDB中存储时间段

Related 相关文章

  1. 1

    如何将带有开始和结束时间列的行转换为R中的时间序列格式?

  2. 2

    如何在Google Calendar API的事件对象中设置开始时间和结束时间

  3. 3

    从开始和结束时间在PHP中分配20分钟的时间段

  4. 4

    从开始和结束时间在PHP中分配20分钟的时间段

  5. 5

    基于二进制开始时间和结束时间列在 R 中为时间序列数据创建唯一键

  6. 6

    在熊猫datetime列中找到值之间的中点,并根据中点创建开始和结束时间段列

  7. 7

    根据R中的多个条件(dplyr,lubridate)创建开始和结束时间列

  8. 8

    如何在ASP.NET C#中获取会话的开始和结束时间

  9. 9

    时间戳python中昨天的开始和结束时间

  10. 10

    由数据框中的列定义的时间段的开始和结束日期

  11. 11

    如何在JavaScript中获取指定时区的一天的UTC开始时间和结束时间?

  12. 12

    Python - 如何在csv中获取带有开始和结束时间列的“持续时间”列?

  13. 13

    如何使用ggplot2按时间段为R中的时间序列图聚合变量

  14. 14

    如何从mysql中的开始时间和结束时间获取记录

  15. 15

    如何在表格内开始时间和结束时间之间的剩余时间创建实时倒数效果?

  16. 16

    如何在R中按28天时间段和地区分组

  17. 17

    在MySQL中存储每日事件的开始和结束时间

  18. 18

    如何从 FullCalendar 中的事件获取弹出消息中事件的开始和结束时间?

  19. 19

    如何基于R中的持续时间(显示开始和结束时间以及以小时和分钟为单位的持续时间)来计算最长日期

  20. 20

    如何通过使用R中的时间序列中的第一个和最后一个时间戳记来定义相遇时间段

  21. 21

    在R中按组检查重叠的开始和结束时间

  22. 22

    如何调整Outlook中重新出现的会议的开始和结束时间?

  23. 23

    限制Jquery动态时间选择器中的开始时间和结束时间

  24. 24

    如何获得期间的开始时间和结束时间?

  25. 25

    在R中创建开始时间和结束时间时,是否有办法确保将日期分组在一起?

  26. 26

    如何基于开始时间和结束时间值创建动态表?

  27. 27

    将活动开始时间和结束时间转换为R dplyr / tidyr中多个组的合并数据

  28. 28

    如何在Android中比较开始时间和结束时间?

  29. 29

    如何在MongoDB中存储时间段

热门标签

归档