如何在特定时间范围内加入不同的剧集

How to join distinct episodes within a specific time-frame

我正在尝试计算动物在任务中不动的情节数。我想设置一个阈值,确定需要打破多长时间才能被视为移动。

在下面的示例中,您可以看到该动物在很短的时间范围内(第 4 和第 5 集以及第 6 和第 7 集发生在彼此相差几毫秒)。我想设置一个条件,如果第一集结束和下一集开始之间的时间差小于 3 秒,则认为该动物始终不动。

示例数据如下:

     time      zone   animal group  week  Ep_number
1: 169.222    open      a1    g1     0         4
2: 169.254    open      a1    g1     0         4
3: 169.322    open      a1    g1     0         5
4: 197.418   closed     a1    g1     0         6
5: 197.451   closed     a1    g1     0         6
6: 197.484   closed     a1    g1     0         6
7: 198.684   closed     a1    g1     0         7
8: 198.718   closed     a1    g1     0         7
9: 198.751   closed     a1    g1     0         7

这是正确的样子:

     time      zone   animal group  week  Ep_number
1: 169.222    open      a1    g1     0         4
2: 169.254    open      a1    g1     0         4
3: 169.322    open      a1    g1     0         4
4: 197.418   closed     a1    g1     0         5
5: 197.451   closed     a1    g1     0         5
6: 197.484   closed     a1    g1     0         5
7: 198.684   closed     a1    g1     0         5
8: 198.718   closed     a1    g1     0         5
9: 198.751   closed     a1    g1     0         5

谢谢!

这是一个基本的 R 解决方案:

df <- read.table(h=TRUE, text = "
     time      zone   animal group  week  Ep_number
169.222    open      a1    g1     0         4
169.254    open      a1    g1     0         4
169.322    open      a1    g1     0         5
197.418   closed     a1    g1     0         6
197.451   closed     a1    g1     0         6
197.484   closed     a1    g1     0         6
198.684   closed     a1    g1     0         7
198.718   closed     a1    g1     0         7
198.751   closed     a1    g1     0         7")

df$Ep_number <- df$Ep_number[1] + cumsum(c(0, diff(df$time)) > 3)
df
#>      time   zone animal group week Ep_number
#> 1 169.222   open     a1    g1    0         4
#> 2 169.254   open     a1    g1    0         4
#> 3 169.322   open     a1    g1    0         4
#> 4 197.418 closed     a1    g1    0         5
#> 5 197.451 closed     a1    g1    0         5
#> 6 197.484 closed     a1    g1    0         5
#> 7 198.684 closed     a1    g1    0         5
#> 8 198.718 closed     a1    g1    0         5
#> 9 198.751 closed     a1    g1    0         5

reprex package (v2.0.1)

于 2022-04-20 创建