複数の重複があるランキングネクタイすべて、
これはフォローアップの質問です https://community.jmp.com/t5/Discussions/Sort-a-matrix/mp/85678#M38246 。
sort_matrix = Function( {m, order = "ascending"}, {t, b = [], i = [], default local},
If( order == "ascending" | order == "Ascending",
For( r = 1, r <= N Cols( m ), r++,
t = m[0, r];
b ||= Sort Ascending( t );
i ||= Matrix( As List( Rank Index( t ) ) );
);
Eval List( {b, i} );
,
// else
If( order == "descending" | order == "Descending",
For( r = 1, r <= N Cols( m ), r++,
t = m[0, r];
b ||= Sort Descending( t );
i ||= Matrix( Reverse( As List( Rank Index( t ) ) ) );
);
Eval List( {b, i} );
)
);
);
したがって、この関数の現在の実装は関係を任意に解決します。私がやりたいことは、要素の順序を維持することによって関係を処理することです。例えば
A = [1 0 1];
{b,i} = sort_matrix(A);
b=
0 1 1
i=
2 1 3上記のRank Indexの代わりにRanking Tie()を使用してからポジションを再割り当てすると、問題が解決することを期待していました。しかし、2つ以上の同順位の場合、Ranking Tie()は別の問題を切り開きます。つまり、入力に偶数の重複があるか奇数の重複があるかによって結果が異なります。何かご意見は ?
再:複数の重複とのネクタイランキング @アダモリス 、
解決策を提供してくれてありがとう。AdamはJMPテクニカルサポートプラットフォームを通して私を助けてくれました、そして興味がある人のための答えはここにあります。
Clear Log(); Clear Globals();
/*A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3];*/
sort matrix = Function( { m,order }, { t, b=[], i=[] },
If(order == "ascending",
For( r = 1, r <= N Cols( m ), r++,
t = A[0,r];
b ||= Sort Ascending( t );
i ||= Matrix( As List( Rank Index( t ) ) );
);
Eval List( { b, i } );
,
// else
If(order == "descending",
For( r = 1, r <= N Cols( m ), r++,
t = A[0,r];
b ||= Sort Descending( t );
i ||= Matrix(As List( Rank Index( -t ) )) ;
);
Eval List( { b, i } );
);
);
);