在Excel 2010中计算百分位数

3
这是我的以下列表。我试图计算95%的呼叫在多少毫秒内返回。
Milliseconds   Number of Calls
    45         14
    46         33
    47         40
    48         41
    49         83
    50         114
    51         124
    52         82
    53         89
    54         99
    55         82
    56         72
    57         80
    58         101
    59         73
    60         74
    61         81
    62         64
    63         70
    64         61

上述数据的含义是-
14 calls came back in 45 milliseconds
33 calls came back in 46 milliseconds
40 calls came back in 47 milliseconds
etc etc

现在我需要从上述数据中找出95%的分位数。这意味着95%的时间内,调用返回的时间都在这个毫秒数内。
请问有谁能告诉我如何在Excel表格中实现这一功能?感谢帮助!
我正在使用Excel 2010。我已经将两列数据复制到我的Excel表格中,以计算百分比。
更新:根据下面的列表,我得出了66作为95百分位数。这意味着95%的时间内,调用返回的时间都在66毫秒内,但我觉得这是不正确的。在我的看来,95%的时间内,调用返回的时间应该在4毫秒左右。
Milliseconds    Number of calls
    0           11
    1           259
    2           504
    3           293
    4           38
    5           15
    6           1
    7           4
    8           1
    9           1
    10          1
    11          2
    23          1
    30          1
    39          1
    147         1

我正在使用这个公式-

=PERCENTILE(IF(TRANSPOSE(ROW(INDIRECT("1:"&MAX(B$2:B$21))))<=B$2:B$21,A$2:A$21),0.95)

我认为你没有正确使用CTRL+SHIFT+ENTER——将公式放在一个单元格中,按F2键选择公式,然后按住CTRLSHIFT键,同时按下ENTER键。如果操作正确,你将会在公式周围得到花括号{和}……以及正确的结果——请注意,LOOKUP函数应该得到相同的结果,但不需要CSE。 - barry houdini
3个回答

3

多加一列会简化计算,但如果您想不用它进行计算也可以......

假设A2:A21中是毫秒数,B2:B21中是调用次数,您可以使用以下数组公式:

=PERCENTILE(IF(TRANSPOSE(ROW(INDIRECT("1:"&MAX(B$2:B$21))))<=B$2:B$21,A$2:A$21),0.95)

请使用CTRL+SHIFT+ENTER进行确认。

或者使用以下非数组版本:

=LOOKUP(SUM(B$2:B$21)*0.95,SUBTOTAL(9,OFFSET(B$1,0,0,ROW(B$2:B$21)-ROW(B$2)+1)),A$2:A$21)

我得到的结果是63 - 如果更改为0.75(第75个百分位数),则结果为59。


你回答中的这行代码是什么意思?“我使用改变为0.75(第75个百分位数)的方法得到了63的结果,而你得到了59。”当我按照你的步骤操作时,我得到了63.05。那么你为什么要加上0.75,以及你是如何得到59的呢? - arsenal
那就意味着95%的时间,调用在63毫秒内返回了?对吗?而75%的时间,调用在59毫秒内返回了? - arsenal
还有一件事,ctrl + shift + enter 在这里是做什么的?当我按下回车键时,我得到不同的结果,而当我按下ctrl + shift + enter时,我得到不同的结果。 - arsenal
需要按下 ctrlshiftenter 才能输入数组公式。 - Skip Intro
Barry Houdini。你能看一下我的评论吗?我说的都是对的吗? - arsenal
显示剩余4条评论

1

设置一个新的列名为“时间内呼叫次数”,并让它计算当前行的呼叫次数总和,加上所有较高行(更短时间)的呼叫次数。然后,在其旁边设置一个名为“百分位”的列,并通过将“时间内呼叫次数”除以接收到的总呼叫次数来计算它。第一行显示的百分位高于95%的行是包含第95个百分位的行。


0
获取毫秒时间字段的标准差,并使用它来计算(95%〜2 x std)低于约2个标准差的调用数量?

我有点困惑。你能为我提供一步一步的指导或者带我完成这些步骤吗?感谢你的帮助。 - arsenal
你能使用宏吗?或者添加另一列吗? - xcorat
好的,那么在原始列旁边添加另一列,以总和方式计算到该点的所有调用。然后查看它是否超过了总调用量的95%。这可行吗? - xcorat
是的。但另一列会是什么?只是我两列的混合,对吧?意思是第三列会有45个14次,对吗?还有其他的毫秒数之类的。然后像这样计算95百分位数? - arsenal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接