Условный процентиль с индексной функцией - PullRequest
0 голосов
/ 06 июня 2018

У меня есть набор данных панели для разных категорий стран, каждая с определенным счетом.Мне нужно рассчитать процентильный балл балла, но только против баллов в пределах одной и той же страны.Мне удалось написать функцию массива для выполнения этой работы, но, похоже, она неправильно вычисляет процентили.Любые идеи, почему?

Набор данных

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», результаты будут такими же.

1 Ответ

0 голосов
/ 06 июня 2018

Это работает для меня, если я копирую ваши данные, начиная с A1 (все еще используя ctrl + shift + введите ):

=PERCENTRANK(IF($A$2:$A$21=A2;$B$2:$B$21);B2)
...