列を使用して別の列を「値の順序」にする方法JMP コミュニティの皆様
ある列の数値 (整数) を別の列の「値の順序」として使用することはできますか?
整数を含む別の列に従って順序付けしたいテキスト列があります。 例として、:Text という列と :Level という列があります。

デフォルトでは、JMP は「値の順序」列プロパティを次のように順序付けします。

私はそれを次のように注文したいと思います。

私の簡単な例では、これは列 :Level と同じ順序です。 もちろんこれを手動で行うこともできますが、実際のデータテーブルには数十のエントリを含むテキスト列があり、手動で行うのではなく、列 :Level を使用して「値の順序」プロパティを設定します。 :Text 列の。
これをスクリプト化する方法、または JMP 内の GUI を通じて実行する方法はありますか?
ありがとう!、
DS
高度な統計モデリング自動化とスクリプト作成マスカスタマイゼーションRe: 列を使用して別の列を「値の順序」にする方法ここでの解決策は、一意のキーが必要な連想配列を使用することです。 したがって、レベルが重複している場合、テキストの一部は「削除」されます(そして、デフォルトの順序で並べられると思います)。
Re: 列を使用して別の列を「値の順序」にする方法こんにちは !
日付数値列の値によって 1 つの列 (バッチ) を注文しようとしていますが、2 つの異なるバッチが同じ日に製造された場合に問題が発生します。
たとえば、なぜこれが正しく順序付けされないのでしょうか?
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "FF"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
テキスト列の順序は次のようになります。
文章レベル
A1
B2
D3
F4
AA5
BB6
CC7
DD8
EE9
FF10
C2
E3
望ましい代わりに:
文章レベル
A1
B2
C2
D3
E3
F4
AA5
BB6
CC7
DD8
EE9
FF10
C2
Re: 列を使用して別の列を「値の順序」にする方法同意します、 @jthi解決策が最善です。JSLを好まない人もいます。多くの人は行順序レベルを知りません。Excel ユーザー (一般化コメントが来る予定) は、行順序レベルをデフォルトとして使用したいと考えています。したがって、それがあなたの素晴らしい議論の質問に答える私の動機です。
Re: 列を使用して別の列を「値の順序」にする方法こんにちは。はい、カスタムオーダーのチェックボックスをオフにする必要がある理由がわかりました。 それは理にかなっている。 jthi の方法の優れた点は、データ テーブルの並べ替えに関係なく、:Text 列の値の順序が適切に維持されることです。Re: 列を使用して別の列を「値の順序」にする方法対処方法の説明に誤りがありました。Big Class データテーブルを使用した例を次に示します。
- データテーブルを高さでソートしました

- 次に、名前列の列プロパティに移動し、行順序レベルを選択し、カスタム順序の選択を解除しました。

- 次に、グラフ ビルダーを開いて名前列を X 軸にドラッグしました。見てわかるように、X 軸の順序は名前の行順序です。

Re: 列を使用して別の列を「値の順序」にする方法こんにちは@jthi 、
ご意見ありがとうございます。 はい、この JSL コードは、:Text 列と :Level 列の奇妙な配置を処理し、値の順序を適切に割り当てることができるため、まさに私が必要とするものです。
私は連想配列コマンドをあまり調べたり、使ったりしたことはありませんが、明らかにそれについてもっと調べる必要があります。 非常に優れており、コードはわずか 3 行です。
ありがとう!、
DS
Re: 列を使用して別の列を「値の順序」にする方法こんにちは@txnelson 、
ご意見ありがとうございます。 残念ながら、この解決策は :Text 列では機能しません。 :Level 列に従ってテーブルを並べ替えて、:Text 列の値の順序に提案されているように「行順序レベル」を適用すると、:Text 列のアルファ順序が維持されます。つまり、AA A の後にも続きます。
もう 1 つの「問題」は、現在日付でソートされている元のデータ テーブルの行が台無しになってしまうことです。 :Text 列と :Level 列は日付全体に散在する可能性があるため、テーブルを日付順に並べておくと役立つ場合があります。 これは実際には大きな問題ではありませんが、データ テーブルにアクセスする他のユーザーがそれを好まないことはわかっています。
ありがとう!、
DS
Re: 列を使用して別の列を「値の順序」にする方法こんにちは@ron_horne 、
ご意見ありがとうございます。 私は、グラフ ビルダーでパレートに似たプロットを作成する方法に精通しています。何度も利用していますが、とても役に立ちます。 残念ながら、私はデータの視覚化だけでなく、データテーブルを使用して他の多くの評価を行っているため、数千行と数十のテキストオプションを含むテーブルに移植可能でスケーラブルなソリューションがあれば役立ちます。 他の 2 つの方法はまだ試していませんが、試してみたいと思います。
ありがとう!、
DS
Re: 列を使用して別の列を「値の順序」にする方法両方@jthiそして@ron_horne素晴らしいソリューションを提供します。ただし、これをインタラクティブな方法で実行したいだけの場合は、次のことを行うだけです。
- データを並べ替えたい列でデータテーブルを並べ替えます。
- 順序付けに使用する列の「値の順序付け列プロパティ」に移動し、「行順序レベル」を選択します。

ここで、行順序レベルで指定した列を順序付け列として使用すると、その列のデータ テーブル内の順序が結果を表示する順序として使用されます。
Re: 列を使用して別の列を「値の順序」にする方法こんにちは@SDF1
グラフビルダーで使用するだけであれば、図のように任意の軸を他の軸で並べ替えることができます。ランキングの統計を変更することもできます。これは、テスト用の順序付けが必要な場合や、他の分析プラットフォームやグラフ作成プラットフォームで使用する場合には役に立ちません。

ほとんどの場合、私が行うことは、他の変数によって表の要約を作成し、それをソートすることです。そこから、カテゴリを値の順序に直接コピーして貼り付けます。 これは誰もが知らないハックですが、効果があります。
ロン
Re: 列を使用して別の列を「値の順序」にする方法GUI でそれが可能かどうかはわかりませんが、いくつかの手順でスクリプトを作成できます。
- まずリスト内のテキスト列を正しく順序付けします。
- 前のリストの Text 列に列プロパティを追加します。
以下は、少なくとも現在の例では機能する可能性のある解決策の 1 つです (「デバッグ」出力を確認するにはログ ウィンドウを開いてください)。
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
//get values from Level and Text into Associative Array
aA_level_text = AssociativeArray(Column(dt, "Level") << Get Values,Column(dt, "Text") << Get Values);
show(aA_level_text); //debug
ordered_level = aA_level_text << Get Values; //Get values (will be ordered by Level)
Show(ordered_level); //debug
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
//Add Value Ordering Column Property to Text column
Eval(Eval Expr(
Column(dt, "Text") << Set Property("Value Ordering", Expr(ordered_level));
));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
dt << Clear Column Selection;