这对我来说似乎是一个微不足道的问题,但我无法正确完成。我的数据集的一部分看起来像这样
1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0
并包含两个 1 的“运行”(不确定这是否是正确的词),一个长度为 3,另一个长度为 5。
如何使用 Google Docs 或类似的电子表格应用程序找到最长的运行?
这对我来说似乎是一个微不足道的问题,但我无法正确完成。我的数据集的一部分看起来像这样
1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0
并包含两个 1 的“运行”(不确定这是否是正确的词),一个长度为 3,另一个长度为 5。
如何使用 Google Docs 或类似的电子表格应用程序找到最长的运行?
在 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 中的数据没有空格
编辑: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。