1

数学的なランキング式を探しています。

サンプルは

    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

4 に答える 4

4

sort ((letters_col, number_col) number_col で降順)

ソートアルゴリズムと同じくらい効率的です。

次に、もちろん行に番号を付けます

編集

「この回答に賛成票を投じないでください。ソートとループは私が求めているものではありません。最初の質問でこれを具体的に述べました。受け取ったさまざまな回答によって指摘されていますが、基本的には正しいです。

しかし、私はあなたが「これを以前に見たことがある」かもしれない場所と方法について考え続けました.

答えはわかったと思います。これは Excel で見たものです。

これを見てください:

代替テキスト

これは、数式を入力し、列 H で並べ替えた後の結果です。

それはまさにあなたが望むものです...

于 2010-06-11T21:55:52.617 に答える
1

何を使っていますか?Excel を使用している場合は、RANK(num, ref) を探しています。

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

それが組み込まれているプログラミング言語は知りません。常に何らかの形のループが必要です。

于 2010-06-12T09:52:13.640 に答える
0

単一の要素のランクが必要な場合は、要素をループし、指定された要素より上の値を持つ要素の数を数え、1 を追加することで、O(n) で実行できます。

すべての要素のランクが必要な場合、最良の (そして実際に唯一の) 方法は、要素を並べ替えることです。あなたがする他のことは、ソートと同等です(「式」はありません)

于 2010-06-11T22:34:17.430 に答える
0

T-SQL を使用していますか? T-SQL RANK()は、必要なものを引き出すことができます。

于 2010-06-14T01:49:47.220 に答える