Is there any way to use the Ranking function, but where the largest value gets assigned a 1? For example:
The code below, returns [3, 5, 4, 1, 2]. However, I would like it to return [3, 1, 2, 5, 4]
Ranking( [3, 6, 5, 0, 1] );
Go to Solution
Here is a quick and dirty way to do it
Names Default To Here( 1 ); a = [3, 6, 5, 0, 1]; Show( Ranking( (Max( a ) + 1) - a; ) );
Ranking((Max(a) + 1) - a) = [3, 1, 2, 5, 4];
View solution in original post
I very much like Jim's solution. But I am lazy so I put the matrix and the list to work and make them carry the heavy load.
x = J( 10, 1, Random Normal() ); Reverse Rank = Function( { x }, { ranks }, ranks = Rank( x ); Matrix( Reverse( As List( ranks ) ) ); ); rev rank = Reverse Rank( x ); Show( x, rev rank );