простая формула ранга - PullRequest
0 голосов
/ 12 июня 2010

Я ищу математическую формулу ранжирования.

Образец

    2008    2009    2010
A   5       6       4
B   6       7       5
C   7       8       2

Я хочу добавить столбец ранга для каждого поля кода периода

                            rank
    2008    2009    2010    2008    2009    2010
B   6       7       5       2       1       1
A   5       6       4       3       2       2
C   7       2       2       1       3       3

пожалуйста, не отвечайте методами, которые перебирают строки и столбцы, постепенно увеличивая значение ранга, это просто. Я ищу формулу , очень похожую на поиск общего процента (элемент / сумма). Я знаю, что видел это раньше, но мне было нелегко найти его.

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

Ответы [ 4 ]

5 голосов
/ 12 июня 2010

сортировка ((letters_col, number_col) по убыванию number_col)

Так же эффективно, как и ваш сорт.

Затем нумеруйте ряды, конечно

Редактировать

Я действительно расстроился из-за вашего комментария "Пожалуйста, не голосуйте за этот ответ, сортировка и цикл - это не то, что я прошу. Я специально сказал об этом в своем первоначальном вопросе." , и отрицательные голоса, потому что, как вы могли заметить по различным полученным ответам, это в основном правильно.

Однако я продолжал размышлять, где и как вы, возможно, «видели это раньше».

Ну, я думаю, что получил ответ: вы видели это в Excel.

Посмотрите на это:

альтернативный текст http://i29.tinypic.com/20qnr14.png

Это результат после ввода формул и сортировки по столбцу H.

Это именно то, что вы хотите ...

1 голос
/ 12 июня 2010

Что вы используете? Если вы используете Excel, вы ищете RANK (num, ref).

=RANK(B2,B$2:B$9)

Я не знаю ни одного языка программирования, в котором бы он был встроен, для этого всегда требовался бы цикл некоторой формы.

0 голосов
/ 14 июня 2010

Вы используете T-SQL? T-SQL RANK () может тянуть то, что вы хотите.

0 голосов
/ 12 июня 2010

Если вы хотите получить ранг элемента single , вы можете сделать это в O (n), пройдя по элементам, посчитав, сколько их имеет значение над данным элементом, и добавив 1.

Если вы хотите получить ранг всех элементов, лучшим (и действительно единственным) способом является сортировка элементов. Все остальное, что вы делаете, будет эквивалентно сортировке (нет «формулы»)

...