列、列名、およびテーブル名を新しいテーブルにコピーする<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
複数のデータ テーブルから新しい空のテーブルに列をコピーするのに少し問題があります。 開くデータ テーブルはすべて同じ列名を持っています。
これまでのところ、複数のテーブルを開くことができますが、最後に開いたデータ テーブルから列をコピーすることしかできません。
以下は私のコードです:
名前のデフォルトはここ( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=ファイルを選択(
「ファイルを 1 つ以上選択してください」 、 // 促す
"$デスクトップ" 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する最初のファイル フィルタ (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトファイル
多数// 複数 - 複数のファイルを開くことができます (OS/X では無視されます)。
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もしも( !リストです(ファイルリスト) 、
ファイルリスト=評価リスト( {ファイルリスト} )
) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
ために(へ= 1 、へ<= Nアイテム(ファイルリスト) 、へ++、
dt =開ける(ファイルリスト[へ] ) ;
に挿入(テーブル名、 dt << getName ) ;
) ;
// ファイルをコピーするための列コピーを作成する
col_dlg =新しい窓( 「コラムコピア」 、
パネルボックス( "4 つの列を選択して新しいテーブルを作成します:" 、
col_clist =コリストボックス(全て、幅( 200 ) 、最大選択( 4 ))) 、
) 、
ボタンボックス( "OK" 、
selected_column_list = col_clist <<選択された;
col1 = selected_column_list [ 1 ] ;
col2 = selected_column_list [ 2 ] ;
col3 = selected_column_list [ 3 ] ;
col4 = selected_column_list [ 4 ] ;
// 選択した 2 つの列だけを使用して新しいテーブルを作成します
dt2 = dt <<サブセット(列(桁( dt 、 col1 ) 、桁( dt 、 col2 ) 、桁( dt 、 col3 ) 、桁( dt 、 col4 ) ) ) ;
col_dlg <<ウィンドウを閉じる;
)
) ;
注: 作成される新しいデータ テーブルは、複数のデータ t から開かれた最新のデータ テーブルのサブセットです。できる。 任意のデータ テーブルから任意の列を選択して新しいテーブルにコピーできるようにしたいと考えています。 ありがとう。
Re: 列、列名、およびテーブル名を新しいテーブルにコピーするどうもありがとうございました。 それが問題だと思いました。最後の助けが 1 つだけあります。 連結は垂直でした。 データテーブルを水平方向に連結しようとしています。 そのため、「連結」の代わりに「結合」を使用しましたが、それらを結合するのではなく、2 つの別々のデータ テーブルを開きます。
Re: 列、列名、およびテーブル名を新しいテーブルにコピーするエラー....これは私のエラーでした....行にあります
Insert Into( tableNames, dt << getName );
行は次のようになります。
Insert into( tableNames, dttemp << getName );
Re: 列、列名、およびテーブル名を新しいテーブルにコピーするデータ テーブルを確認しましたが、まだ 1 つしか開きません。 以下のログから取得したエラーは次のとおりです。
名前未解決: 'dt' のアクセスまたは評価の dt 、dt/*####*/
次のスクリプトでは、/*####*/ でマークされたエラー
名前のデフォルトはここ ( 1 ) です。
fileList = ファイルを選択(
"1つ以上のファイルを選択",
"$デスクトップ",
{"JMP ファイル|jmp;jsl;jrn;csv", "すべてのファイル|*"},
1、
0,
空()、
多数
);
If( !Is List( ファイルリスト ),
fileList = 評価リスト( {fileList} )
);
テーブル名 = {};
For( f = 1, f <= N Items( fileList ), f++,
dttemp = Open( ファイルリスト);
Insert Into( tableNames, dt/*####*/ <
もし ( f == 1,
dt = dttemp、
dt << concatenate( dttemp, 最初のテーブルに追加 ( 1 ) );
Close( dttemp, nosave );
);
);
col_dlg = New Window( "列コピー",
Panel Box( "4 つの列を選択して新しいテーブルを作成します:",
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
)、
ボタンボックス( "OK",
selected_column_list = col_clist << getselected;
col1 = selected_column_list[1];
col2 = selected_column_list[2];
col3 = selected_column_list[3];
col4 = selected_column_list[4];
dt2 = dt << サブセット(
列(
列(dt、col1)、
列 (dt、col2)、
列 ( dt、col3 )、
列 ( dt、col4 )
)
);
col_dlg << ウィンドウを閉じます。
)
Re: 列、列名、およびテーブル名を新しいテーブルにコピーする4 つのファイルのそれぞれを読み取り、それらを最初のファイルに追加するように、コードを変更しました。したがって、最終的には、ファイルは 1 つしかありませんが、各ファイルのすべてのデータがそこに含まれています。
コードを完全にテストできなかったため、わずかな問題がある可能性があります。私が変更した唯一のコードは、For ループ内でした。コードをもう一度実行してから、ログ View==>Log を調べて、エラーの内容を確認してください。また、データ テーブルをチェックインし、すべてのデータがデータ テーブルに作成されていることを確認します。
Re: 列、列名、およびテーブル名を新しいテーブルにコピーするこんにちは、ジムさん
助けてくれてありがとう、でもまだうまくいきません。 今回、新しいコードを実行すると、列コピーは表示されず、開きたいファイルが 1 つだけ表示されます。
Re: 列、列名、およびテーブル名を新しいテーブルにコピーする以下のコードは、各ファイルを読み取り、それらを 1 つのデータ テーブルに連結し、Column Copier によって処理します。
名前のデフォルトはここ( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=ファイルを選択(
「ファイルを 1 つ以上選択してください」 、 // 促す
"$デスクトップ" 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn;csv" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する最初のファイル フィルタ (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウを指定します。 それぞれ 1 または 0 の値を設定します。
空() 、 // デフォルトファイル
多数// 複数 - 複数のファイルを開くことができます (OS/X では無視されます)。
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もしも( !リストです(ファイルリスト) 、
ファイルリスト=評価リスト( {ファイルリスト} )
) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
ために( f = 1 、へ<= Nアイテム(ファイルリスト) 、へ++、
dttemp =開ける( ファイルリスト);
に挿入( テーブル名、 dt << getName ) ;
// データ テーブルを一緒に追加します
もしも( f == 1 、
dt = dttemp 、
dt <<連結する( dttemp 、最初のテーブルに追加( 1 ) ) ;
近い( dttemp 、 nosave ) ;
) ;
) ;
// ファイルをコピーするための列コピーを作成する
col_dlg =新しい窓( 「コラムコピア」 、
パネルボックス( "4 つの列を選択して新しいテーブルを作成します:" 、 col_clist =列リストボックス( 全て、幅( 200 ) 、最大選択( 4 ) ) 、 ) 、
ボタンボックス( "OK" 、
selected_column_list = col_clist <<選択されます。
col1 = selected_column_list[ 1 ] ;
col2 = selected_column_list[ 2 ] ;
col3 = selected_column_list[ 3 ] ;
col4 = selected_column_list[ 4 ] ;
// 選択した 2 つの列だけを使用して新しいテーブルを作成します
dt2 = dt <<サブセット( 列(桁( dt 、 col1 ) 、桁( dt 、 col2 ) 、桁( dt 、 col3 ) 、桁( dt 、 col4 ) ) ) ;
col_dlg <<ウィンドウを閉じる;
)
) ;