列の並べ替えに関する質問JMP が名前の降順で列を並べ替えていることはわかっています。 どのテストを参照しているのかを識別しやすくするために、列にテスト仕様書で表示される名前を付ける必要があります。 16 チャンネル [0 ~ 15] と 2 つのテスト識別子 [ T & R ] があります。 複数の列の異なるデータ フィールドを連結します。 例を以下に示します。この順序では、すべてのスライドを移動する必要があるため、PowerPoint にプロットして配置するのが面倒になります。 この例から、0、1、10、11、12、13、14、15、2、3、4、5、6、7、8、9 となることがわかります。 これを修正する方法についての簡単な提案。 00、01、02、...のようにすれば正しく順序付けできることはわかっていますが、前述したように、仕様では先頭のゼロが省略されています。
CH0 R 状態 3 @ 周波数
CH0 R ステート 4 デルタアンプ @ 周波数
CH0 T 状態 1 @ 周波数
CH1 R 状態 3 @ 周波数
CH1 R ステート 4 デルタアンプ @ 周波数
CH1 T 状態 1 @ 周波数
CH10 R 状態 3 @ 周波数
CH10 R ステート 4 デルタ アンプ @ 周波数
CH10 T ステート 1 @ 周波数
CH11 R 状態 3 @ 周波数
CH11 R ステート 4 デルタアンプ @ 周波数
CH11 T ステート 1 @ 周波数
Re: 列の並べ替えに関する質問私が送信した最後の返信を解決策としてマークしてください。これは、他の人が将来正しい解決策を見つけるのに非常に役立ちます。
Re: 列の並べ替えに関する質問まあなんと幸運なことでしょう。 当社の IT 部門は、当社向けに JMP 15 を配布中です。
ありがとうございました。Re: 列の並べ替えに関する質問JMP 15 を使用してスクリプトを作成しました。これにより、
列( i ) << 名前を取得。
しかし、あなたの応答後に戻って調べたところ、JMP 14 以前では、JMP に << get name の結果を強制的に取得させるために Eval() が必要であることがわかりました。
Eval( Column( i ) << 名前を取得 )
以下のコードは、JMP 15 および以前のバージョンで動作します。
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 12 ),
New Column( "Column 1", Character, "Nominal" ),
New Column( "CH0 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) )
);
Wait( 5 ); // Wait 5 seconds so one can see the original example table
// If a column name starts with "CH" adjust the name
For( i = 2, i <= N Cols( dt ), i++,
If( Substr( Column( i ) << get name, 1, 2 ) == "CH",
Column( i ) << set property( "Original Name", Eval( Column( i ) << get name ) );
tempName = Substr( Column( i ) << get name, 3 );
number = Word( 1, tempName, " " );
tempName = Substr( tempName, Length( number ) + 2 );
number = Substr( "00", Length( number ) ) || number;
tempName = "CH" || number || " " || tempName;
Column( i ) << set name( tempName );
)
);
// Reorder the table names
dt << reorder by name;
// Replace the column names with the original names
For( i = 1, i <= N Cols( dt ), i++,
If( Is Empty( Column( i ) << get property( "Original Name" ) ) == 0,
Column( i ) << set name( Column( i ) << get property( "Original Name" ) );
Column( i ) << delete property( "Original Name" );
)
);
Re: 列の並べ替えに関する質問ジム、助けてくれてありがとう... 先頭に「0」を追加して、01 ~ 10 を強制的に適切な順序にすると、何をしているかがわかります。 名前を元の名前に戻すスクリプトの部分は実行されているように見えますが、列は変更されません。 列情報に移動すると、列プロパティに「column( i ) << Get Name」と表示されます。これは実際の名前ですか? 列プロパティは削除されますが、列の名前は変更できませんRe: 列の並べ替えに関する質問これは、サンプル データの数値を 3 桁の数値に変換し、列を名前で並べ替えてから、列の名前を元の名前にリセットするサンプル スクリプトです。
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 12 ),
New Column( "Column 1", Character, "Nominal" ),
New Column( "CH0 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) )
);
wait(5); // Wait 5 seconds so one can see the original example table
// If a column name starts with "CH" adjust the name
For( i = 1, i <= N Cols( dt ), i++,
If( Substr( Column( i ) << get name, 1, 2 ) == "CH",
Column( i ) << set property( "Original Name", Column( i ) << get name );
tempName = Substr( Column( i ) << get name, 3 );
number = Word( 1, tempName, " " );
tempName = Substr( tempName, Length( number ) + 2 );
number = Substr( "00", Length( number ) ) || number;
tempName = "CH" || number || " " || tempName;
Column( i ) << set name( tempName );
)
);
// Reorder the table names
dt << reorder by name;
// Replace the column names with the original names
For( i = 1, i <= N Cols( dt ), i++,
If( Is Empty( Column( i ) << get property( "Original Name" ) ) == 0,
Column( i ) << set name( Column( i ) << get property( "Original Name" ) );
Column( i ) << delete property( "Original Name" );
)
);
Re: 列の並べ替えに関する質問あなたが説明していることを処理しようとしていますが、理解できません。 例を挙げていただけますか?
ありがとうRe: 列の並べ替えに関する質問あなたは私を混乱させます。 私の理解が正しければ、列をアルファベット順に並べ替えたいのですが、列名にゼロ以外の埋め込み数字が含まれています。 したがって、あなたの質問は、数値がゼロで埋められているかのように、列を正しく並べ替える方法だと思います。 これは、データテーブルに存在する行の数とは関係ありません。 したがって、上記の私の提案は依然として有効であるはずです。 データ テーブルを読み込んだら、元の名前を新しい列プロパティに保存する小さなスクリプトを作成し、列名をゼロで埋めた名前に変更し、列の順序を変更してから、列全体で再度ループして名前を変更します。元の列名に戻ります。
これはデータを変更せず、列名のみを変更するため、非常に高速に実行されます。
私には何が欠けているのでしょうか?Re: 列の並べ替えに関する質問ありがとうジム..
SQL スクリプトでこの列を作成することを忘れていました。 約 200 万行のデータを持ち込むことを考慮して、時間を節約するために、テーブルが実際に JMP に到達する前にできる限りのことを行うようにしています。 したがって、列は元の列になります。Re: 列の並べ替えに関する質問私は、名前を必要な形式に変更するスクリプトを用意することでこれに対処し、名前による並べ替えを使用できるようにしました。まず、スクリプト内で「元の名前」という列プロパティを作成し、いつでも名前を元に戻せるようにします。スクリプトが名前を変更すると、
dt << 名前順に並べ替える
その後、列名を再度ループし、「元の名前」列プロパティから値を取得し、列名を元の名前に戻すことができます。