Сортировка портфелей по критериям (верхние 30%, средние 40% и последние 30%).

В настоящее время у меня есть следующая таблица

Компания --------- Дата -------- Обмен ------- Размер

A---------------2000---------A-------------50

A---------------2001---------A------------ 100

B---------------2000---------B------------450

B---------------2001---------B------------- 458

Я хочу разделить каждую компанию на три категории

"Верх" ==> Лучшие 30%

"Средний" ==> Средний 40%

"Нижний" ==> Нижний 30%

Расчетные значения отсечки должны быть отфильтрованы с помощью «года» и «обмена» = A.

Я пробовал следующую формулу

  =if([B/M]>PERCENTILEX.INC(FILTER(June,June[exchg]="A"&&EARLIER([datadate])=[datadate]),June[B/M],0.3),"L",IF([B/M]>PERCENTILEX.INC(FILTER(June,June[exchg]="A"&&EARLIER([datadate])=[datadate]),June[B/M],0.7),"M","T")) 

По некоторым причинам он не работает так, как должен.

Заранее спасибо.


person Myurathan Kajendran    schedule 10.07.2016    source источник


Ответы (2)


Формула DAX (также известная как Power Pivot) PERCENTILE() доступна только в предварительной версии Excel 2016 (см. здесь: https://msdn.microsoft.com/en-us/library/dn802551.aspx).

Поскольку у меня не установлена ​​эта версия, я не могу дать ответ по предложенной формуле. Однако вы можете построить свою собственную логику процентиля, используя RANKX().

Сначала добавьте новый столбец с именем [RankInExchangeA]:

=RANKX(
    FILTER(
        Table1,
        EARLIER([Exchange])=[Exchange] && EARLIER([year])=[year]
    ),
    [size]
 )

Функция EARLIER() в основном означает ThisRowsValue().

Теперь добавьте желаемый верхний/нижний/средний столбец:

= Switch(TRUE(),
         [RankInExchange]>=CALCULATE(max([RankInExchange]),filter(Table1,EARLIER([year])=[year] && EARLIER([Exchange])=[Exchange]))*(7/10),"Bottom",
         [RankInExchange]<CALCULATE(max([RankInExchange]),filter(Table1,EARLIER([year])=[year] && EARLIER([Exchange])=[Exchange]))*(3/10),"Top",
         "Middle"
     )

Части *(3/10) и *(7/10) формулы определяют пороговые значения. Обратите внимание, что в примере кластеризация выполняется следующим образом:

Bottom <= 30% < Middle <= 70% < Top
person Stephan    schedule 11.07.2016
comment
спасибо за помощь. Думаю не правильно сформулировал вопрос, хочу выделить все компании (Компании есть и на других биржах). Но все компании должны быть распределены на основе значений отсечения, рассчитанных только для компаний в обмене А. - person Myurathan Kajendran; 11.07.2016
comment
Я думаю, что столбец RankInExchangeA должен иметь фильтр для Exchenge=A. И формула Switch должна сравниваться со значением размера. Я пытаюсь воспроизвести медиану с помощью этого метода, чтобы сравнить результаты. Но пока не повезло. Для медианы я умножил на 0,5 - person Myurathan Kajendran; 11.07.2016
comment
Вы хотите определить пороговые значения, используя подмножество данных, и сравнить их с определенным пороговым значением, используя полный набор данных. Вы не можете сделать это за один шаг. Сначала вам нужно определить пороги, сохранить их как переменную и потом сравнить с ними. Эта ссылка объясняет, как достичь своей цели, используя меры вместо вычислений. столбцы: powerpivotpro.com/2011/09/ Однако я бы порекомендовал сначала ознакомиться с правильным использованием мер в целом. - person Stephan; 11.07.2016
comment
Я думал так же. Большое спасибо за вашего помощника. Это значит многое. - person Myurathan Kajendran; 11.07.2016
comment
Я сделал это, используя функцию prentilex. и ваша функция переключения очень помогла. Не могли бы вы изучить этот вопрос о мощности. Я хочу улучшить свою вычислительную мощность, уменьшив размер выборки. Заголовок stackoverflow.com/questions/38500927/ - person Myurathan Kajendran; 21.07.2016

Мне удалось сделать это с помощью функции centilex.inc. Вот полная формула, которую я использовал.

=SWITCH(TRUE(),Table[SIZE]<=PERCENTILEX.INC(FILTER(Table,EARLIER([Date])=[Date]),Table[SIZE],0.3),"Bottom",Table[SIZE]>=PERCENTILEX.INC(FILTER(Table,EARLIER([Date])=[Date]),Table[SIZE],0.7),"Top","Middle")
person Myurathan Kajendran    schedule 13.07.2016