- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Ranking in opposite order
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] );
2 ACCEPTED SOLUTIONS
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Ranking in opposite order
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];
Jim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Ranking in opposite order
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 );
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Ranking in opposite order
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];
Jim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Ranking in opposite order
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 );