여러 개의 중복으로 순위 매기기모든,
이 질문에 대한 후속 조치입니다. 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위의 순위 색인 대신 순위 타이 ()를 사용한 다음 순위를 다시 지정하면 문제가 해결되기를 바랍니다. 그러나 2 개 이상의 관계가있는 경우 Ranking Tie ()는 입력에 짝수 또는 중복 홀수가 있는지 여부에 따라 다른 결과를 제공하는 또 다른 문제를 엽니 다. 이견있는 사람 ?
제목 : Re : 복수 중복 타이 랭킹 @adammorris ,
솔루션을 제공해 주셔서 감사합니다. 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 } );
);
);
);