キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
言語を選択 翻訳バーを非表示
最初に公開されたスレッドを表示

テーブルを連結して入力ファイルを閉じる

Christian
Level I

開いていて入力に使用されているテーブルを閉じる方法を探しています

 

For( f2 = 1, f2 < N Items( テーブル ), f2++,
ConcTable = Tables[f2] << /*###*/Concatenate(
テーブル[f2 + 1]、
出力テーブル名( "両方" )
) /*###*/;
Close( filelist[f2], 保存なし );
);

 

ログの答えは次のとおりです。

 

Send は、 'Send' のアクセスまたは評価でスクリプト可能オブジェクトを期待します、 Tables[f2] << /*###*/Concatenate( Tables[f2 + 1], Output Table Name( " Both" ) ) /*###* /

 

 

 

 

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

1 件の受理された解決策

受理された解決策
txnelson
Super User

Re: テーブルを連結して入力ファイルを閉じる

これはテーブルを連結し、不要なテーブルを閉じる簡単な方法です。

Names Default To Here( 1 );
Final_Table="Data_" || char(ntable);
// Concatenate the tables and delete them.  Add all of the tables to the first table
dt-data table(1);
For( i = 2, i <= N Table(), i++,
 dt << concatenate(data table(i), append to first table(1));
 close(data table(i), nosave);
);
// Rename the table to the desired name
dt << set name(Final_Table);
7件の返信7
txnelson
Super User

Re: テーブルを連結して入力ファイルを閉じる

これは動作するコードであり、指定したロジックに従います。 ただし、なぜこれを行う必要があるのかわかりません。おそらく、結果はあなたが想像しているものとは異なるでしょう。 そうでない場合は、最終結果がどうなるかを返信してください。

Names Default To Here( 1 );

// Create sample tables
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt << subset( selected rows( 0 ), selected columns( 0 ), by( :age ) );
Close( dt, nosave );

// Create your Tables list
Tables = {};
For( i = 1, i <= N Table(), i++,
 Insert Into( Tables, Data Table( i ) << get name )
);

// Run the concatinations
For( f2 = 1, f2 < N Items( Tables ), f2++,
 ConcTable = Data Table( Tables[f2] ) << Concatenate( Data Table( Tables[f2 + 1] ), Output Table Name( "Both" ) );
 Close( Data Table( Tables[f2] ), No Save );
);

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Christian
Level I

Re: テーブルを連結して入力ファイルを閉じる

ジム、答えてくれてありがとう。 もう少し拡張してみましょう。 目的は、データ テーブルのリストを連結し、2 つの行を削除することです。 最終的な連結テーブルに寄与したデータ テーブルが閉じられます。 入力データテーブルの数は可変です。 連結するデータテーブルの選択は、開始文字列が等しく、連結されたデータテーブルの最終名が同じ文字列であるというルールに従います。

 

ここでは、連結と 2 行の削除に加えて、最終的なテーブルを保存するコードを示します。

 

If(N 項目 (ファイルリスト)>0、

for (nu_t = 1、nu_t <= num_tables、nu_t++、

FinalTable = Munger(filelist[1],6,4);
Final_Table = "Data_"||FinalTable||".jmp";
//Show(FinalTable);
for (f2 = 1, f2 < niitems(Tables), f2++,
ConcTable = Tables[f2] << Concatenate(Tables[f2+1], 出力テーブル名( " Both" ) );
Close( Tables[f2] , 保存なし );
);
// ダブル行を削除
ConcTable = 現在のデータ テーブル();
Col_min = Parse( "Col Min( Row(), :Name(\!"") || Concat Items( ConcTable << 列名を取得( string ), "\!"), :Name(\!"" ) || "\!"))" );
重複 = [];
For Each Row( If(col_min != Row(), 重複 |/= Row() ) );
ConcTable << 行を削除(重複);

ConcTable << Save(Path_datatable_out||Final_Table);

//For(cc=1,cc <= niitems(Tables),cc++, Close(Tables[cc], No Save));
);
); // If 条件

 

ご返信をお待ちしております。

 

キリスト教徒

 

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: テーブルを連結して入力ファイルを閉じる

データテーブルのサンプルと、重複行とみなされるものの図を提供していただけますか?

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Christian
Level I

Re: テーブルを連結して入力ファイルを閉じる

ジム、

 

添付された 2 つのテーブルを見ると、それらの列の数と列名は同じです。 両方を区別する唯一の点は行数です。 列 #1 はタイムスタンプであり、これに基づいて重複が削除されます。

 

スクリプトに記載された方法は機能します。 最終テーブルを保存し、最終テーブルの入力となったテーブルを閉じる効率的な方法を探しています。

 

よろしくお願いします、

キリスト教徒

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: テーブルを連結して入力ファイルを閉じる

これはテーブルを連結し、不要なテーブルを閉じる簡単な方法です。

Names Default To Here( 1 );
Final_Table="Data_" || char(ntable);
// Concatenate the tables and delete them.  Add all of the tables to the first table
dt-data table(1);
For( i = 2, i <= N Table(), i++,
 dt << concatenate(data table(i), append to first table(1));
 close(data table(i), nosave);
);
// Rename the table to the desired name
dt << set name(Final_Table);

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

rc_hertzy
Level III

Re: テーブルを連結して入力ファイルを閉じる

素晴らしい解決策です。 まず、タイプミス (マイナス記号ではなく等号): 4 行目は次のようになります。

dt=データテーブル(1);

さて、ソース用に 1 つの列を保持するにはどうすればよいでしょうか? ただ付け加えるなら

ソース列の作成

Concatenate ステートメントでは、連続したソース列を取得しますが、必要なものは何もありません。つまり、すべてのソース ファイルがリストされます。

関連: ファイルを手動で連結し、出力ファイルからソース スクリプトをスクリプト ウィンドウにコピーすると、リストされたファイル名が見つからないというエラーが発生して実行されません。 スクリプトは次のとおりです (File1.jmp は選択された開いているファイルです)。

dt = 現在のデータ テーブル();

dt <<連結する(

データ表( 「ファイル2.jmp」 )、

データ表( 「ファイル3.jmp」 )、

出力テーブル( 「結合テスト.jmp」 )、

ソース列の作成

);

ありがとう。 -リック

 

 

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

rc_hertzy
Level III

Re: テーブルを連結して入力ファイルを閉じる


@rc_hertzy書きました:

素晴らしい解決策です。 まず、タイプミス (マイナス記号ではなく等号): 4 行目は次のようになります。

dt=データテーブル(1);

さて、ソース用に 1 つの列を保持するにはどうすればよいでしょうか? ただ付け加えるなら

ソース列の作成

Concatenate ステートメントでは、連続したソース列を取得しますが、必要なものは何もありません。つまり、すべてのソース ファイルがリストされます。

関連: ファイルを手動で連結し、出力ファイルからソース スクリプトをスクリプト ウィンドウにコピーすると、リストされたファイル名が見つからないというエラーが発生して実行されません。 スクリプトは次のとおりです (File1.jmp は選択された開いているファイルです)。

dt = 現在のデータ テーブル();

dt <<連結する(

データ表( 「ファイル2.jmp」 )、

データ表( 「ファイル3.jmp」 )、

出力テーブル( 「結合テスト.jmp」 )、

ソース列の作成

);

ありがとう。 -リック

 

 


最後の部分で間違いを見つけました。 1 つのデータ ファイルの名前を変更したため、当然のことながらスクリプトはそれを見つけることができませんでした。

それでも、開いているすべてのファイルを明示的にリストする必要がないように、ソース列を追加するようにソリューションを変更する方法が欲しいです。 ありがとう。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。