「列」ダイアログ・ボックス - 列のプロパティもコピーします<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />複数のデータテーブルを開いて、それらのデータテーブルに新しい列を作成するスクリプトがあります。 開いているすべてのデータテーブルのすべての列を表示する列コピーボックスのスクリプトを作成することは可能ですか?必要な列だけをそのプロパティとともに選択してコピーできますか?
私の現在のコードは、列をコピーする前にデータテーブルを1つの新しいテーブルに連結しようとしますが、次のようになりますJMP では、同時に 3 つ以上のデータテーブルを連結することはできません。
以下は、編集しやすくするために書いたコードの要約です。 ありがとう。
デフォルトの名前はここにあります( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // 促す
「$デスクトップ」 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する初期ファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウのいずれかを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトのファイル
多数// 複数 - 「保存フラグ」 = 0 の場合、値 1 を使用すると、複数のファイルを開くことができます (OS/X では無視されます)。
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もしも( !リストです(ファイルリスト) 、
ファイルリスト=評価リスト( {ファイルリスト} )
) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
ために( f = 1 、 f <= N 個のアイテム(ファイルリスト) 、 f ++、
dt =開ける(ファイルリスト[ f 】 ) ;
に挿入(テーブル名、 dt << getName ) ;
) ;
dt =新しいテーブル( 「連結犬H」 ) ;
//ファイルをコピーするための列コピー機能を作成します
dt =現在のデータテーブル() ;
Col_dlg =新しい窓( 「コラムコピー機」 、
パネルボックス( 「4 つの列を選択して、次の新しいテーブルを作成します。」 、
コル_clist =コリストボックス(全て、幅( 200 ) 、最大選択済み( 4 )) 、
) 、
ボタンボックス( "OK" 、
選択された列のリスト=コル_clist <<選択される;
列1 =選択された列のリスト[ 1 】 ;
列2 =選択された列のリスト[ 2 ] ;
列3 =選択された列のリスト[ 3 ] ;
列4 =選択された列のリスト[ 4 ] ;
// 選択した 2 つの列だけを使用して新しいテーブルを作成します
dt2 = dt <<サブセット(列(桁( dt 、列1 ) 、桁( dt 、列2 ) 、桁( dt 、列3 ) 、桁( dt 、列4 ) ) ) ;
Col_dlg <<ウィンドウを閉じる;
)
) ;
データテーブルを追加しました。
メッセージ編集者: Luqman Olawin
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますこんにちは、ジムさん
「名前」に置き換えてみました。 「列を一致させる」機能についてコメントしましたが、それは私にとってはうまくいくようです。 助けてくれて本当にありがとう、本当に感謝しています!
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますこのエラーは、「ロット ID にウェーハ ID」という名前の列が存在しないことを示しています。これは、データテーブル内の一致する列です。照合している列名は「name」と呼ばれるものだと思います。「ロット ID 内のウェーハ ID」への 2 つの参照を「名前」に変更します。
Re: [列] ダイアログ ボックス - 列のプロパティもコピーします以下はログウィンドウから得られるエラーです。 データテーブルを添付するように投稿を編集しましたが、それらはすべてテーブル名が異なるだけで同じ列があります。私はしたいと思います同じ名前の列を別々にしておくと、列コピー機能が表示されたときに、コピーしたい列を選択できます。 ありがとう。
スコープ付きデータ テーブル アクセスには、 'dt:Wafer ID in Lot ID' 、 dt:Wafer ID in Lot ID/*###*/ のアクセスまたは評価にデータ テーブル列または変数が必要です。
次のスクリプトでは、/*###*/ でマークされたエラーが発生します。
名前のデフォルトは Here( 1 );
fileList = ファイルを選択(
"複数のファイルを 1 つ選択してください",
"$デスクトップ",
{"JMP ファイル|jmp;jsl;jrn;csv", "すべてのファイル|*"},
1、
0、
空()、
多数
);
If( !Is List( fileList ),
fileList = 評価リスト( {fileList} )
);
テーブル名 = {};
For( f = 1, f <= N Items( fileList ), f++,
dttemp = Open( fileList);
Insert Into( tableNames, dttemp << getName );
If( f == 1,
dt = dttemp、
dtx = dt << 結合(
( dttemp ) を使用すると、
列の一致による(
dt:ロットID内のウェーハID/*###*/ = dttemp:ロットID内のウェーハID
)、
メインテーブルの順序を保持()、
出力テーブル名( "連結ウォッチH" )
);
Close( dttemp, nosave );
Close( dt, nosave );
dt = dtx;
);
);
dt = 現在のデータ テーブル();
Col_dlg = 新しいウィンドウ( "列コピー",
パネル ボックス( "4 つの列を選択して新しいテーブルを作成します:",
Col_clist = 列リスト ボックス(すべて、幅( 200 )、最大選択数( 4 ))
)、
ボタンボックス(「OK」、
selected_column_list =col_clist << getelected;
Col1 = 選択された列のリスト[1];
Col2 = 選択された列のリスト[2];
Col3 = 選択された列のリスト[3];
Col4 = 選択された列のリスト[4];
dt2 = dt << サブセット(
列(
列( dt,col1 )、
列( dt,col2 )、
列( dt,col3 )、
列(dt,col4)
)
);
col_dlg << ウィンドウを閉じる;
)
);
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますさまざまなファイルについて教えてください。 同じ名前の列はありますか? 同じ名前を持つ列は、「同じ名前の列をマージする(1)」ステートメントを使用して、結合内で互いに重なり合います。同じ名前の列を分離して結合することを期待している場合、結合を行うコードのセクションは、結合されたデータ テーブルの "name" という列の名前が "name" ではなく、"<データ テーブル 1 の名前> の名前" になることを認識する必要があり、結合が行われるようにスクリプトで処理する必要があります。
データテーブルの列「名前」は各行の一意の識別子ですか?
JMP ログ (View==>Log) にどのようなエラー メッセージが表示されているか教えていただけますか?
私のシステムでエラーなしで動作するコードは次のとおりです。入力ファイルを見つけるために開いているディレクトリと、結合での一致に使用される列がコードとは異なることに注意してください。それ以外は同じコードである必要があります。このコードはエラーなしで動作します。 このコードが機能するのは、マッチングに使用される列を除いて ("ロット ID 内のウェーハ ID」)。
デフォルトの名前はここにあります( 1 ) ;
ファイルリスト=ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // 促す
"c:\users\txjim\documents\multifiles" 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する初期ファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」または「開く」ウィンドウを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトのファイル
多数// Multiple - 複数のファイルを開くことができます (OS/X では無視されます)
) ;
もしも( !リストです( ファイルリスト ) 、
ファイルリスト=評価リスト( {fileList} )
) ;
テーブル名= {} ;
ために( f = 1 、 f <= N 個のアイテム( ファイルリスト ) 、 f ++、
温度=開ける( ファイルリスト);
に挿入(テーブル名、温度<< getName ) ;
もしも( f == 1 、
dt =温度、
dtx = dt <<加入(
( dttemp ) を使用、
列の一致による( dt :名前( 「ロットID内のウェーハID」 ) =温度:名前( 「ロットID内のウェーハID」 )) 、
メインテーブルの順序を保持() 、
同じ名前の列をマージ( 1 ) 、
出力テーブル名( 「連結ウォッチH」 )
) ;
近い( dttemp 、保存しない) ;
近い( dt 、保存しない) ;
dt = dtx ;
) ;
) ;
dt =現在のデータテーブル() ;
Col_dlg =新しい窓( 「コラムコピー機」 、
パネルボックス( 「4 つの列を選択して、次の新しいテーブルを作成します。」 、コル_clist =列リストボックス( 全て、幅( 200 ) 、最大選択( 4 )) 、 ) 、
ボタンボックス( "OK" 、
選択された列のリスト=コル_clist <<選択されます。
列1 =選択された列のリスト[ 1 】 ;
列2 =選択された列のリスト[ 2 】 ;
列3 =選択された列のリスト[ 3 】 ;
列4 =選択された列のリスト[ 4 ] ;
dt2 = dt <<サブセット( 列(桁( dt 、列1) 、桁( dt 、列2) 、桁( dt 、列3) 、桁( dt 、列4 ) ) ) ;
Col_dlg <<ウィンドウを閉じる;
) ;
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますそれも機能しません。 この変更はテーブルに結合することさえありません。
Re: [列] ダイアログ ボックス - 列のプロパティもコピーします問題は、テーブルに同じ名前の列がある場合、JMP がテーブルを結合するときに列の名前を変更することです。したがって、最初の結合後に「name」という列が変更されました。したがって、次の行を変更します。
dtx = dt <<加入(と(温度) 、列の一致による(名前=名前) 、メインテーブルの順序を保持する() 、出力テーブル名( 「連結ウォッチH」 ) ) ;
に
dtx = dt <<加入(と(温度) 、列の一致による(名前=名前) 、メインテーブルの順序を保持する() 、出力テーブル名( 「連結ウォッチH」 )、同じ名前の列をマージします(1) ) ;
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますありがとうジム。 タイミングは問題を解決しませんでした(私もそれを増やしてみました)。 ただし、閉じる機能はうまく機能します。 現時点での問題は、3 番目のファイルが最後に結合されたテーブルと結合せずに自動的に開くことです。 昨日から色々な方法を試しているのですが、うまくいきません。
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますこのコードは、最初のデータ テーブルを開き、次に 2 番目のテーブルを開き、新しい結合データ テーブルを作成し、元のテーブルと開いたばかりのテーブルを閉じて、新しく結合したテーブルを保持することを目的としています。次に、3 番目のテーブルを開きます。 これを以前に結合したテーブルに結合し、新しいデータ テーブルを作成します。次に、古い結合テーブルを閉じ、最新の結合テーブルを保持したまま新しく開いたテーブルを閉じます。
タイミングに問題があり、close 関数の 1 つを削除したという問題がある可能性があります。次のコードに変更してください。
もしも( f == 1 、
dt =温度、
dtx = dt <<加入(と(温度) 、列の一致による(名前=名前) 、メインテーブルの順序を保持する() 、出力テーブル名( 「連結ウォッチH」 ) ) ;
待機(1);
近い(温度、保存しない) ;
閉じる (dt,nosave);
dt = dtx ;
) ;
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますこんにちは、ジムさん
助けてくれてありがとう、何度か試した後、それを理解しました。 そのスレッドに返信すべきでした。 以下は私が使用したコードです。 現在の問題は、2 つ以上のテーブルを結合できないことです。 3 つのテーブルを結合しようとするたびに、1 つではなく 2 つの異なる連結されたテーブルが表示されます。 1 つ目は連結データ テーブル 1 と 2 を示し、2 つ目は連結データ テーブル 1 と 3 を示します。
連結されたデータ テーブルが 1 つないと、列コピー機能を使用するのが非常に困難になります。 そこで私は代わりに、列コピー機能を使用して複数のデータ テーブルのすべての列を表示することはできるだろうかと考えました。
デフォルトの名前はここにあります( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // 促す
「$デスクトップ」 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する最初のファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウのいずれかを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトのファイル
多数// Multiple - 複数のファイルを開くことができます (OS/X では無視されます)
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もしも( !リストです(ファイルリスト) 、
ファイルリスト=評価リスト( {ファイルリスト} )
) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
ために( f = 1 、 f <= N 個のアイテム(ファイルリスト) 、 f ++、
温度=開ける(ファイルリスト[ f 】 ) ;
に挿入(テーブル名、温度<< getName ) ;
// データテーブルを一緒に追加します
もしも( f == 1 、
dt =温度、
dtx = dt <<加入(と(温度) 、行番号別、列の一致による(名前=名前) 、メインテーブルの順序を保持する() 、出力テーブル名( 「連結ウォッチH」 ) ) ;
近い(温度、保存しない) ;
dt = dtx ;
) ;
) ;
dt =現在のデータテーブル() ;
//ファイルをコピーするための列コピー機能を作成します
Col_dlg =新しい窓( 「コラムコピー機」 、
パネルボックス( 「4 つの列を選択して、次の新しいテーブルを作成します。」 、
コル_clist =列リストボックス(全て、幅( 200 ) 、最大選択済み( 4 ) ) 、
) 、
ボタンボックス( "OK" 、
選択された列のリスト=コル_clist <<選択される;
列1 =選択された列のリスト[ 1 】 ;
列2 =選択された列のリスト[ 2 ] ;
列3 =選択された列のリスト[ 3 ] ;
列4 =選択された列のリスト[ 4 ] ;
// 選択した 2 つの列だけを使用して新しいテーブルを作成します
dt2 = dt <<サブセット(列(桁( dt 、列1 ) 、桁( dt 、列2 ) 、桁( dt 、列3 ) 、桁( dt 、列4 ) ) ) ;
Col_dlg <<ウィンドウを閉じる;
)
) ;
Re: [列] ダイアログ ボックス - 列のプロパティもコピーしますこの質問の最後の質問で、テーブルを連結するのではなく、テーブルを水平に結合したいと述べました。以下は以前に送信したスクリプトを再加工したものですが、今回はテーブルが水平方向に結合されています。
デフォルトの名前はここにあります( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // 促す
「$デスクトップ」 、 // 初期フォルダ
{ 「JMP
ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する初期ファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」または「開く」ウィンドウを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトのファイル
多数// Multiple - 複数のファイルを開くことができます (OS/X では無視されます)
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もしも( !リストです( ファイルリスト ) 、
ファイルリスト=評価リスト( {fileList} )
) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
ために( f = 1 、 f <= N 個のアイテム( ファイルリスト ) 、 f ++、
温度=開ける( ファイルリスト);
に挿入(テーブル名、温度<< getName ) ;
// データテーブルを一緒に追加します
もしも( f == 1 、
dt =温度、
dtx = dt <<加入( with( dttemp ) 、行番号別) ;
近い( dttemp 、保存しない) ;
dt = dtx ;
近い(dtx 、保存しない) ;
) ;
) ;
//ファイルをコピーするための列コピー機能を作成します
Col_dlg =新しい窓( 「コラムコピー機」 、
パネルボックス( 「4つ選んでください
新しいテーブルを作成するための列:" 、コル_clist =列リストボックス( 全て、幅( 200 ) 、最大選択( 4 )) 、 ) 、
ボタンボックス( "OK" 、
選択された列のリスト=コル_clist <<選択されます。
列1 =選択された列のリスト[ 1 ] ;
列2 =選択された列のリスト[ 2 】 ;
列3 =選択された列のリスト[ 3 ] ;
列4 =選択された列のリスト[ 4 ] ;
// 選択した 2 つの列だけを使用して新しいテーブルを作成します
dt2 = dt <<サブセット( 列(桁( dt 、列1) 、桁( dt 、列2) 、桁( dt 、列3) 、桁( dt 、列 4 ) ) ) ;
Col_dlg <<ウィンドウを閉じる;
)
) ;