0

这对我来说似乎是一个微不足道的问题,但我无法正确完成。我的数据集的一部分看起来像这样

1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0    

并包含两个 1 的“运行”(不确定这是否是正确的词),一个长度为 3,另一个长度为 5。

如何使用 Google Docs 或类似的电子表格应用程序找到最长的运行?

4

2 回答 2

4

在 Excel 中,您可以使用单个公式来获得连续 1 的最大数量,即

=MAX(FREQUENCY(IF(A2:A100=1,ROW(A2:A100)),IF(A2:A100<>1,ROW(A2:A100))))

CTRL+ SHIFT+确认ENTER

在 Google 表格中,您可以使用相同的公式,但使用数组公式而不是使用 CSE,即

=arrayformula(MAX(FREQUENCY(IF(A2:A100=1,ROW(A2:A100)),IF(A2:A100<>1,ROW(A2:A100)))))

假设 A2:A100 中的数据没有空格

于 2012-07-06T13:29:53.010 回答
2

编辑:whuber 的建议对我来说太简单了,无法更新此回复。可以只使用一个简单的 IF 语句检查当前行是否等于 1。如果是,它启动一个计数器(前一行 + 1),如果不是,它再次从 0 开始计数器。

您只需要将 B1 的第一行初始化为 1 或 0。一旦您将单元格公式写入并填充其余部分,就使用它的动态更新。

所以你会开始;

A   B
1   1
1   =IF(A2=1, B1+1, 0)
1   
0   
0   
1   
1   
1   
1   
0   
0   
0   

然后填写;

A   B
1   1
1   =IF(A2=1, B1+1, 0)
1   =IF(A3=1, B2+1, 0)
0   =IF(A4=1, B3+1, 0)
0   =IF(A5=1, B4+1, 0)
1   =IF(A6=1, B5+1, 0)
1   =IF(A7=1, B6+1, 0)
1   =IF(A8=1, B7+1, 0)
1   =IF(A9=1, B8+1, 0)
0   =IF(A10=1, B9+1, 0)
0   =IF(A11=1, B10+1, 0)
0   =IF(A12=1, B11+1, 0)

这里B列的结果是;

A   B
1   1
1   2
1   3
0   0
0   0
1   1
1   2
1   3
1   4
0   0
0   0
0   0

希望逻辑可以扩展到 Google Docs。

于 2012-07-06T11:54:18.447 回答