我正在为我的统计课制作电子表格。它包含一个填充数量的列和一个填充每个数量的频率的列。使用这两列和几个公式,可以找到平均值、众数、中位数、系数变异、四分位数、四分位距、最小值和最大值以及标准差。
问题在于,为了缩短数量列表,需要使用频率列。以数量列表为例:10, 12, 14, 15, 18, 18, 10。
请注意,18 和 10 已重复。我没有在数量列中重复这些数量,而是将该数量的频率从 1 增加到 2。这样做的原因是数量数据列表非常大。这意味着我可能有 5000 个数量,可能会减少到 20 个数量,其中每个数量将具有更大的频率。
问题在于内置中位数和众数函数仅使用 1 列或行,并且不考虑每个数量的频率。
我的问题是:有没有办法使用两列来计算中位数和众数?下面是我解释的一个例子。此外,我的包含数量和频率的列可能不会从头到尾填写,这意味着可能有空条目。
Quantity | Frequency
10 | 4
12 | 6
11 | 3
15 | 1
18 | 10
VS.
Quantity
10
10
10
10
12
12
12
12
12
12
11
11
11
15
18
18
18
18
18
18
18
18
18
18
Run Code Online (Sandbox Code Playgroud)
如果 Office 365 具有动态数组公式,请使用:
=MEDIAN(INDEX(A2:A6,MATCH(SEQUENCE(SUM(B2:B6),,0),SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))
Run Code Online (Sandbox Code Playgroud)
和
=MODE.SNGL(INDEX(A2:A6,MATCH(SEQUENCE(SUM(B2:B6),,0),SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))
Run Code Online (Sandbox Code Playgroud)
如果不是,那么这个数组公式:
=MEDIAN(INDEX(A2:A6,MATCH(ROW($ZZ1:INDEX($ZZ:$ZZ,SUM(B2:B6)))-1,SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))
Run Code Online (Sandbox Code Playgroud)
和
=MODE.SNGL(INDEX(A2:A6,MATCH(ROW($ZZ1:INDEX($ZZ:$ZZ,SUM(B2:B6)))-1,SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))
Run Code Online (Sandbox Code Playgroud)
如果是数组公式,那么退出编辑模式时需要用Ctrl-Shift-Enter 来确认,而不是Enter。