如何在特定时间范围内加入不同的剧集
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 创建
我正在尝试计算动物在任务中不动的情节数。我想设置一个阈值,确定需要打破多长时间才能被视为移动。
在下面的示例中,您可以看到该动物在很短的时间范围内(第 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 创建