【发布时间】:2021-03-18 02:11:44
【问题描述】:
我的数据如下所示:
trial event time_start time_end time_duration region
1 A 36403 36504 101 none
1 B 36506 36516 10 none
1 A 36518 36700 182 top
1 B 36702 36708 6 none
1 A 36710 37054 344 top
1 B 37056 37088 32 none
1 A 37090 37640 550 right
1 B 37642 37678 36 none
1 A 37680 37812 132 left
2 A 41278 41318 40 top
2 B 41320 41336 16 none
2 A 41338 41490 152 top
2 B 41492 41498 6 none
2 A 41500 41994 494 top
2 B 41996 42032 36 none
2 A 42034 42492 458 left
对于每个试验,我想将数据分组到 4 个相等的时间箱中(每次试验的总时间不同)。所以我想我需要:(1)按试验对数据进行分组,(2)为每次试验的累积持续时间添加一列,(3)将每次试验的总时间除以 4,并相应地将每一行分配给时间箱。这就是我想要的:
trial event time_start time_end time_duration region cumtime bin
1 A 36403 36504 101 none 101 1
1 B 36506 36516 10 none 111 1
1 A 36518 36700 182 top 293 1
1 B 36702 36708 6 none 299 1
1 A 36710 37054 344 top 643 2
1 B 37056 37088 32 none 675 2
1 A 37090 37640 550 right 1225 4
1 B 37642 37678 36 none 1261 4
1 A 37680 37812 132 left 1393 4
2 A 41278 41318 40 top 40 1
2 B 41320 41336 16 none 56 1
2 A 41338 41490 152 top 208 1
2 B 41492 41498 6 none 214 1
2 A 41500 41994 494 top 708 3
2 B 41996 42032 36 none 744 3
2 A 42034 42492 458 left 1202 4
根据上面的数据,我需要为每个试验中的每个 bin 计算以下内容:(1) 在每个 time bin 中,事件为 A 的行数,(2) 在每个 time bin 中,事件为 A 且区域正确的行数。这就是我想让我的决赛桌看起来像的样子:
trial bin totalevent_A totalevent_A_right
1 1 2 0
1 2 1 0
1 3 0 0
1 4 2 1
2 1 2 0
2 2 0 0
2 3 1 0
2 4 1 0
我不知道如何首先按试验对数据进行分组,然后将每个试验的总时间分成 4 个相等的时间箱,并将每个事件分配给它(完整的数据集有 1000 多个试验)。任何建议/替代方法都会非常有帮助!
【问题讨论】:
标签: r dplyr time-series data.table tidyr