JMP17 の英数字ソート規則JMP17.0.0 の並べ替え機能を使用していますが、予期しない結果が得られます。並べ替えたい列には、文字と数字が混在したシリアル番号のリストが含まれています (例: G95VXWW8CID5、G921J8D2CIE3、G943H085CIB2)。「並べ替え」->「昇順」アクションでは、G95... が G92... の前に配置され、G92... は G94... より前に配置されます。3 つのシリアル番号すべての最初の 2 文字が同じ (G9、3 番目の位置) ですが、2 は 5 の前にあるはずの 4 の前にある必要があるため、これは予想外です。JMP が英数字の値をソートするルールは何ですか?また、それらのルールは編集できますか?
データのブレンディングとクリーンアップ結果の共有と伝達ウィンドウズRe: JMP17 の英数字ソート規則設定は「数値順序」に設定されています。
に行く
ファイル=>設定=>テーブル
数値順序のチェックボックスをオフにします

Re: JMP17 の英数字ソート規則私は JMP のソートの選択には敬意を表して反対せざるを得ない。私はこの方法を行う他のソフトウェアを知りませんし、まったく明白ではありません。
データ型が文字として指定されている場合は、そのように扱われ、受け入れられたルールに従って順序付けされる必要があります。 おそらく JMP には新しいカテゴリ Char/Num が必要でしょう。
以下のデータセットは、JMP によって次のように並べ替えられます。
0CNFB
0ERRB
01JAB
013BB
2X0UB
11DBB
13ZYB
17TSB
156QB
1474B
ここで説明されているルールは理解しましたが、これがどのように順序付けされるべきか誰が考えるでしょうか?これは文字フィールドを順序付ける方法ではありません。
Re: JMP17 の英数字ソート規則に同意する@Victor_G @jthi Natural Sort Order を反映した並べ替えルールについて ... Excel と JMP ではこれらの並べ替え方法が異なることがわかります。 しかし、以下の例で 11 が 2 より大きいことを理解せずに、Excel を処理するのに非常に長い時間を費やしてきたため、それが正常ではないことを忘れているような気がします。 あなたの場合、943、921、95 があります。潜在的な問題は、コーディング システムが 95 を最高値にしたいかどうかです。 それなら私も同意します@Victor_Gヘルパー列の利用について。
アルファベット順の並べ替え:
- z11
- z2
自然な並べ替え:
- z2
- z11
Re: JMP17 の英数字ソート規則みんな、ありがとう![値の順序] プロパティを設定して並べ替えると、値が予想した順序で配置されます。
Re: JMP17 の英数字ソート規則また、列に値の順序プロパティを追加すると、JMP はデータが英数字であることをすぐに認識し、単純な並べ替えで設定するかどうかを尋ねます。 「はい」と答えて、次のダイアログで [OK] をクリックすると (つまり、何も調整せず、そのまま受け入れます)、並べ替えは期待どおりに機能します。



Re: JMP17 の英数字ソート規則列のプロパティを使用せずに並べ替えの実行方法に影響を与えることができるかどうかはわかりません。 「サポート」列を作成して希望の順序で並べ替えたり、クエリビルダーを使用したりすることもできます。


または、値の順序列プロパティを使用します

</CODE></P>
<P><CODE class=" language-jsl">
並べ替えに関数を使用する場合のいくつかの違いは次のとおりです。</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1",
Character,
"Nominal",
Set Values({"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"})
)
);
a = dt[0, 1];
show(a);
b = Associative Array(Column(dt, 1));
Show(Sort List(a));
Show(b << get keys);
Show(Ranking(a));
dt << Sort(By(:Column 1), Replace Table, Order(Ascending));
Show(dt[0, 1]);
Write();</CODE></PRE>
<PRE><CODE class=" language-jsl">a = {"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"};
Sort List(a) = {"G921J8D2CIE3", "G943H085CIB2", "G95VXWW8CID5"};
b << get keys = {"G921J8D2CIE3", "G943H085CIB2", "G95VXWW8CID5"};
Ranking(a) = [3, 1, 2];
dt[0,1] = {"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"};
JMPテーブルソートが使用されているようです自然な並べ替え順序 (wikipedia)のように@Victor_G言及されていますが、アルファベット順ではありません
Re: JMP17 の英数字ソート規則こんにちは@EdHutchins99 、
コミュニティへようこそ!
ご指摘の 3 つの ID で問題を再現しようとしました。
JMP の動作は、最初に見つかった英数字を使用して並べ替えようとするため、正常かつ予期された動作であると思います。
最初の文字はすべて G であるため (アルファベットに基づくソートは不可能)、JMP は直後の数字でソートを実行します。 したがって、並べ替えようとすると、95 < 921 < 943 と同じ数の数字がないため、JMP はこの G95... を表示します。 G92... と G94... の順です。
最初の 3 文字の英数字のみを保持するように ID 列を再コーディングして新しい列を作成し、この新しい列で並べ替えを実行すると、期待どおりの結果が得られるはずです。
これは、元の列の名前が ID である場合に新しい列で使用できる数式スクリプトです (それ以外の場合は、この数式にある列の名前で ID を変更する必要があります)。
Recode( :ID, {Word( [1 3], _rcNow, "", Unmatched( _rcNow ) )} )
これがお役に立てば幸いです。
Re: JMP17 の英数字ソート規則並べ替える列に [値の順序] 列プロパティが設定されていますか?値に印刷できない文字(空白含む)はありませんか?
サンプルデータテーブルを提供していただければ、非常に役立ちます。