Google sheets 在Google工作表中使用具有多个数量的单个值计算数据集的统计数据
在谷歌表单中,我一直在研究各种价格的数据集,将它们与实际成本进行比较,并排除正常范围以外的值。我以前得到过帮助,但我无法根据我得到帮助的原始公式设计更多的公式 在我的数据集中,我手动输入了非常大的扩展数据集,其中多次出现多个数字。我用多个值将每个值记为Google sheets 在Google工作表中使用具有多个数量的单个值计算数据集的统计数据,google-sheets,average,google-sheets-formula,standard-deviation,iqr,Google Sheets,Average,Google Sheets Formula,Standard Deviation,Iqr,在谷歌表单中,我一直在研究各种价格的数据集,将它们与实际成本进行比较,并排除正常范围以外的值。我以前得到过帮助,但我无法根据我得到帮助的原始公式设计更多的公式 在我的数据集中,我手动输入了非常大的扩展数据集,其中多次出现多个数字。我用多个值将每个值记为value(x),其中x表示数据集中出现的数量或总量,以使其更小;因为我需要手动键入每个 计算平均值的公式如下: =ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY
value(x)
,其中x表示数据集中出现的数量或总量,以使其更小;因为我需要手动键入每个
计算平均值的公式如下:
=ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(ISNUMBER(A19:AP19), "♦"&A19:AP19&" 1", IF((A19:AP19<>"")*(NOT(ISNUMBER(A19:AP19))), "♦"®EXREPLACE(A19:AP19, "[()]", ), ))),,99^99)),,99^99), "♦")), " "),
"select Col1*Col2 label Col1*Col2 ''", 0))/SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(ISNUMBER(A19:AP19), "♦"&A19:AP19&" 1", IF((A19:AP19<>"")*(NOT(ISNUMBER(A19:AP19))), "♦"®EXREPLACE(A19:AP19, "[()]", ), ))),,99^99)),,99^99), "♦")), " "),
"select Col2", 0)))
例如:(
如果(ISNUMBER(A19:AP19),”♦"&A19:AP19和“1”,如果((A19:AP19“”)*(不是(ISNUMBER(A19:AP19)),”♦®EXREPLACE(A19:AP19,“[()]”,),),,,,99^99)),99^99♦")), " "),
选择Col1*Col2标签Col1*Col2'',0))/SUM(查询(拆分)(转置)(拆分)(查询(转置)(查询(
如果(ISNUMBER(A19:AP19),”♦&A19:AP19&“1”,如果((A19:AP19“”)*(不是(ISNUMBER(A19:AP19)),”♦®EXREPLACE(A19:AP19,“[()]”,),),,,,99^99)),99^99♦")), " "),
“选择列2”,0)))
这非常有效。我还有一个公式可以计算数据集的最小值和最大值
我试图编辑代码,为自己提供模式(不会读取value(x)
value)和IQR(四分位数范围),但绝对没有成功
我希望在使用值(x)
以下是数据集示例的链接:
解决方案
Google Sheets为这些统计变量提供了自定义公式。使用这些公式如下:
- 标准偏差:
=STDEV(B14:B113)
- 平均(平均)偏差:
=AVEDEV(B14:B113)
- IQR:
=四分位数(B13:B14,3)
我希望这对您有所帮助。如果您还需要什么,或者您不了解什么,请告诉我。基本公式(B14:B,并扩展格式为
值(x)
的所有值)
平均值(B3)
中位数(B5)
模式(B6)
最大值(B7)
最小值(B8)
IQR-四分位范围(B9)
平均偏差(B10)
标准偏差(B11)
Is工作得很好,我注意到有些数据在重复数据超过一定数量时,Is会导致#值错误,例如9094会导致错误,如果复制或减少到1000以下,它就会工作。这很好,非常感谢您对其进行研究。我在数据中使用了公式,但我发现如果我使用1个数据集,其中包含空白区域未来的数据集。中位数、Mod、IQR、Mean Dev、StrDev都有错误。我相信问题在于单元格是否为空。这个答案可以修改为适用于较大的空白区域吗?此外,当数字分布在数据表中而不是一列时,数字也不准确。请参阅此处链接的电子表格:检查我问题中的注释。I我想我有它的可用性…但IQR仍然有问题Side注:IQR是
=四分位(B13:B14,3)-四分位(B13:B14,1)
问题:当范围大于数据集时,公式不起作用。在分割数据以填充部分空白区域时,公式显示的数字不正确。在计算中位数、偏差之前,我拼接了每个公式以分割每列。=ARRAYFORMULA(中位数)(转置)(拆分)查询(报告)(索引)(IF(B14:B=”“,)拆分(IF)(ISNUMBER)(B14:B)…对于每一列:TRANSPOSE(SPLIT)(查询)REPT(索引)(IF(B14:B=”“,)SPLIT(IF(ISNUMBER)(B14:B)),TRANSPOSE(SPLIT)(查询)REPT(索引)(IF(C14:C=“”,)SPLIT(IF(ISNUMBER)(C14:C)
。
=ARRAYFORMULA(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")))
=ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(ISNUMBER(B14:B), "♦"&B14:B&" 1", IF((B14:B<>"")*(NOT(ISNUMBER(B14:B))),
"♦"®EXREPLACE(B14:B, "[()]", ), ))),,99^99)),,99^99), "♦")), " "),
"select Col1*Col2 label Col1*Col2 ''", 0))/
SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(ISNUMBER(B14:B), "♦"&B14:B&" 1", IF((B14:B<>"")*(NOT(ISNUMBER(B14:B))),
"♦"®EXREPLACE(B14:B, "[()]", ), ))),,99^99)),,99^99), "♦")), " "),
"select Col2", 0)))
=B7-B8
=ARRAYFORMULA(MEDIAN(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(MODE(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(MAX(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(B14:B)
,,99^99)),,99^99), " ")), "where not Col1 contains '-'", 0)))
=ARRAYFORMULA(MIN(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(B14:B)
,,99^99)),,99^99), " ")), "where not Col1 contains '-'", 0)))
=ARRAYFORMULA(QUARTILE(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")), 3)-
QUARTILE(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")), 1))
=ARRAYFORMULA(AVEDEV(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(STDEV(TRANSPOSE(SPLIT(QUERY(REPT(
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦",
INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))