【发布时间】:2020-03-09 20:38:57
【问题描述】:
我正在寻找一种解决方案,以便在特定列中满足特定条件后对总行数求和。
简化样本数据:
rbind( c('Group A', "eventcode.1", "10:00"),
c('Group A', "eventcode.3", "09:59"),
c('Group B', "eventcode.4", "09:57"),
c('Group A', "eventcode.6", "09:56"),
c('Group B', "eventcode.4", "09:52"),
c('Group A', "eventcode.4", "09:51"),
c('Group A', "eventcode.9", "09:48"),
c('Group A', "eventcode.1", "09:46"),
c('Group A', "eventcode.3", "09:45"),
c('Group B', "eventcode.4", "09:41"),
c('Group B', "eventcode.8", "09:40"),
c('Group B', "eventcode.4", "09:37"),
c('Group B', "eventcode.1", "09:33"),
c('Group B', "eventcode.2", "09:31"),
c('Group B', "eventcode.3", "09:30"),
c('Group A', "eventcode.5", "09:28"),
c('Group A', "eventcode.6", "09:28"),
c('Group B', "eventcode.7", "09:27"),
c('Group B', "eventcode.2", "09:26"),
c('Group A', "eventcode.9", "09:26"),
c('Group B', "eventcode.11", "09:24"),
c('Group A', "eventcode.7", "09:20"),
c('Group A', "eventcode.1", "09:17"),
c('Group A', "eventcode.2", "09:15"),
c('Group B', "eventcode.4", "09:12"),
c('Group B', "eventcode.4", "09:08")) %>%
as.data.frame() -> temp.data
colnames(temp.data) = c('Group', 'Event', "Time")
这是一组精简的数据(原始数据将有 40 多列与事件相关的数据),但重要的是要知道每个数据集中只有两种类型的组,并且这些组记录了操作分配有特定代码的事件。每当触发特定事件代码时,我想识别该行并创建一个新变量,该变量将导致事件的行数相加(按每个组 A/B 分组),只要组之间没有中断以及正在采取的行动。触发它的事件代码是“eventcode.1”。然后,在之前的那些行中,我想对特定事件代码 (eventcode.4) 的发生和完成记录事件的组导致 eventcode.1 的事件总时间相加。
即,
row 1 - Group A - would have a value of 0, eventcode.4 count of 0, and time count of 0 seconds
row 8 - Group A - would have a value of 2, eventcode.4 count of 1, and time count of 5 seconds
row 13 - Group B - would have a value of 3, eventcode.4 count of 2, and time count of 8 seconds
row 23 - Group A - would have a value of 1, , eventcode.4 count of 0, and time count of 3 seconds
【问题讨论】:
-
value和timecount是如何计算的? -
@RonakShah 它是在前面的总行中发生的 eventcode.4 的总和,以及以秒为单位的总时间差(时间是倒计时,所以从技术上讲,每当注册 eventcode.1 时,它是最短时间,最长时间是 A/B 组记录的第一个事件 - 所以在第 8 行的输出中,它是第 8 行和第 6 行之间的时间差,即 9:51 到 9: 46 或 5 秒。)