如何在跳过某些值的同时累计总小时数?

我研究野生动物,目前我正在分析我的主要物种从山上(主要栖息地)到人类住区的时间。 这里是一个包含数据的图片: 数据无论如何,你可以看到有三个彩色列。 黄色是数据,绿色是时间,蓝色是动物是在山上还是在山下(当动物离开时是红色的)。 正如你所看到的,这个特定的动物曾经多次出现过。 在这种情况下,他三次下山,但不同程度地停留。 由于我有数千个数据点,我基本上想确定每个“离开山”事件持续多久。 也就是说,我认为每次动物从山上出发是一个单独的事件,我想分别确定每次远足的动物离开山的时间。 在这种情况下,这个动物出了三次,我想分别把这三个事件加总。 所以,如上所述,一个事件将是动物离开山的每一个场合,在那里停留(不pipe多久),并最终回到原点。 任何帮助将不胜感激。

最简单的方法就是计算在一个“开”期之后的特定运行中有多less个连续的“关”期,然后乘以3小时20分钟,你可以这样做(从K2开始)

=IF(AND(G1="On",G2="Off"), MATCH("On",G3:G$100,0)*TIME(3,20,0)*24,0) 

您可以通过查看修复的个别时间进一步得到上限和下限(例如,对于第一次游览,其可能大致在3小时20分钟至10小时40分钟之间)。

上限

 =IF(AND(G1="On",G2="Off"), (INDEX(J3:J$100,MATCH("On",G3:G$100,0))-J1)*24,0) 

下限

 =IFERROR(IF(AND(G1="On",G2="Off"), (INDEX(J3:J$100,MATCH("On",G3:G$100,0)-1)-J2)*24,0),0) 

其中J列包含一个date时间值,通过在A列和B列中添加date和时间。

在这里输入图像说明

这就提出了一个问题,即当动物在数据结束时还处于离山状态时会发生什么情况(由于MATCH无法find含有“开”的单元,所以现在给出#N / A)。 如果在实践中发生这种情况,将需要决定如何处理这一案件。

注意,当只有一次离山测量时,下限为零,因为理论上动物可能在测量之前立即离开,之后立即返回。

编辑

为了解决上述问题,在数据结束时动物还处于离山状态(查看样本数据,看起来好像其他动物的数据紧跟在第一个动物的数据之后),您将需要

 =IF(AND(G1="On",G2="Off"), IFERROR(MATCH(1,(G3:G$100="On")*(E3:E$100=E2),0),MATCH(TRUE,E3:E$100<>E2,0))*TIME(3,20,0)*24,0) 

这将不得不使用Ctrl Shift Enter作为数组公式input

你可能会争辩说,你可能需要对这样一个不完整的山外游览进行一些平均化处理,这会使它变得更加复杂,但这是一个Excel的答案,不能过分分析这个分析的正确与否。

我想一个好的起点是知道你如何收集这些统计数据。