【发布时间】:2018-11-16 01:08:48
【问题描述】:
我有一个针对不同国家/地区类别的面板数据集,每个类别都有一些分数。我需要计算分数的百分位排名,但只针对同一国家/地区的分数。我设法编写了一个数组函数来完成这项工作,但它似乎错误地计算了百分位数。任何想法为什么?
数据集
Country Score Manual percentiles Array-function percentiles
AT 0.211 0.555 0.368
AT 0.090 0.111 0.157
AT 0.722 0.888 0.842
AT 0.241 0.666 0.421
AT 0.099 0.222 0.21
AT 0.138 0.444 0.315
AT 0.068 0 0
AT 0.136 0.333 0.263
AT 0.461 0.777 0.736
AT 0.982 1 1
BE 0.068 0 0.052
BE 0.316 0.333 0.526
BE 0.304 0.222 0.473
BE 0.072 0.111 0.105
BE 0.703 0.777 0.789
BE 0.419 0.444 0.578
BE 0.788 0.888 0.894
BE 0.817 1 0.947
BE 0.444 0.666 0.684
BE 0.425 0.555 0.631
我计算的手动百分位数:
=PERCENTRANK($B$2:$B$11;B2) for Country = "AT"
=PERCENTRANK($B$12:$B$21;B12) for COuntry = "BE"
我输入数组函数百分位数的数组公式(并使用 Ctrl + Shift + Enter 输入)
=PERCENTRANK(IF($A$2:$A$21=INDEX($A$2:$A$21;ROW()-1);$B$2:$B$21);
INDEX($B$2:$B$21;ROW()-1))
结果似乎抓住了数据的要点,但实际上是不同的。任何想法为什么?我发现如果我把 INDEX($A$2:$A$21;ROW()-1) 替换成“AT”或者“BE”,结果是一样的。
【问题讨论】:
标签: excel indexing conditional percentile