複数のファイルを開く複数の測定ファイルを開いて、それらを 1 つのファイルに連結したいと考えています。
残念ながら、ファイルのヘッダーが奇妙なため、使用するのは簡単ではありません。複数のファイルをインポート...
そこで、for ループを設定し、open() ... 経由ですべてのファイルをロードし、1 つずつ処理して、それらを連結します。
for( open(...)) が MFI に比べてどれほど遅いかは驚くべきことです。
私が試したいくつかのトリック:
- すべてのファイルをロードし、一度連結します --> 役立ちます
- オプション「invisible」(テーブルの更新を取り除くため) --> 非常に役立ちます
しかし、それでも MFI のパフォーマンスに到達するチャンスはありません。
さらに何かトリックはありますか?
MFI (スタッキングなし) を使用し、データ テーブルを個別に処理して連結すると便利です。
MFIにファイルを開くように指示するコマンドはありますか見えない?
データアクセスRe: 複数のファイルを開く- いくつかの良いウィッシュリスト項目のように思えます: より積極的な連結オプション、非表示オプション。
- テーブルを最小限にしてみてください
- <
- MFI には、open() を使用するよりも高速な CSV リーダーもあります。 ただし、データの追加のスキャンを防ぐのに十分な情報を指定するソース スクリプトを使用できる場合は、open を使用した方が高速になる可能性があります。 または、MFI を使用して単一のファイルをインポートしてみてください。
- MFI は複数のスレッドを使用します。 時間(秒ではなく分)を見ている場合は、 JMP は JMP を実行できますか?一度に複数の open() を実行する必要があるかもしれません。 あなたがそれを機能させるために費やした時間がいつか報われるかどうかは明らかではなく、他の人にとっては悪夢を維持することになります。
Re: 複数のファイルを開く私は、他のいくつかのオプションを使用してこれを実行し、MFI の力だけで動作するアドインを作成しました。 会社固有の項目を削除する必要があるため、コミュニティでは共有していません。 これは私が何年もかけて学んだことを共有したいと思うかもしれません:)
とにかく、MFI を使用できます。私が行うことは基本的に (ディレクトリ内のファイルを選択することで) ファイル名のリストを作成することです。そのため、単一のパスとそのパスのファイル名のリストがあり、それらをMFIコマンド。
次に出力を確認し、複数のファイルがある場合は強制的に連結します。 ここに抜粋があります
filter = ConcatItems(fileList,";");
filesImported1 = Multiple File Import(
<<SET folder=""></SET>
フィルタは基本的にファイル名のリストですが、「;」で区切られています。
Re: 複数のファイルを開くこのようなものが機能するかもしれません。
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
dir = "$temp/testfiles/"; // make sample files here
Delete Directory( dir );
Create Directory( dir );
Save Text File( dir || "a.csv", "a,b,c\!n1,2,3\!n-1,-2,-3" );
Save Text File( dir || "b.csv", "junk\!nc,b,a,e\!n3,4,5,98\!n-1,-2,-3,-4" );
Save Text File( dir || "c.csv", "junk\!njunk\!nb,d,a,c\!n6,99,7,8\!n-1,-2,-3,-4" );
dtList = Multiple File Import(
<<SET folder=""></SET>
cleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upクリーンアップ
次に、どの列が数値であるかを決定する必要があります...
Re: 複数のファイルを開くやあ@ネイサンクラーク。
スニペットをありがとう。
ここで取り上げた応用例に関しては、ファイルをマージする前に、ファイル レベルで何らかの前処理が必要です。
したがって、オプションを使用してファイルをロードすることをお勧めします
<<SET stack="" mode=""></SET>
私のシステム (Jmp 17.1) では、Jmp が 100 以上のテーブルを表示し始めます。前に反応します
<< show window(0);
その理由は次のとおりです。
@ホギ書きました:MFIにファイルを開くように指示するコマンドはありますか見えない?
Re: 複数のファイルを開くわかりました、それはもっと理にかなっています。 あなたが何を目指しているのかわかります...
処理を少し速くする唯一の方法は、ファイルを非表示ではなく非公開で開く場合です。 かなり高速なアップグレードです...ただし、MFI の速度に匹敵するかどうかはわかりません。 プライベートの場合でも、JMP はファイルに対してほとんどの操作を行うことができ、必要な RAM が大幅に削減されることがわかりました。テスト時にプライベートをコメントアウトする必要があるだけです。そうしないと、表示できないテスト テーブルを探すことになります 
JMP が MFI をさらに改善できることを願っています。
Re: 複数のファイルを開く@ネイサンクラーク、どうもありがとう、プライベートおおよそ 2 倍速くなります:)
@ネイサンクラーク書きました:JMP が MFI をさらに改善できることを願っています。
はい、見えないMFI の (プライベートでも!) オプション
https://community.jmp.com/t5/JMP-Wish-List/Private-option-for-Import-Multiple-Files/idc-p/632087#M42...
GameChangerになるでしょう!
私にとっては十分な選択肢があります:
- オープンでプライベートモードを使用し、短い昼寝をしましょう
- うまく適応できているかどうかを確認してください@Craige_Halesファイルタイプに対する以下の解決策。
- を待つ見えないJmp 18 のオプション 
Re: 複数のファイルを開くありがとう@Craige_Hales - 真似したい本当に良いアイデアがたくさんあります!
残念ながら、
// transfer data from text to unique cols.<BR />...
かなり遅いです...
ここに例があります - 私のシステムでは、データのロードに 1 秒かかり、データの変換に 10 秒かかります...
もっと見る...
Re: 複数のファイルを開くデータ テーブルの行列列の設定はかなり複雑です。 この方法では、行ごとに 1 つのセットアップを使用するのではなく、40 行すべてに 1 つのセットアップを使用します。 (を参照してください。温度リスト。) 大きなクラスのテスト ケースでは最大 4 倍優れていることがわかります。
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
dir = "$temp/testfiles/"; // make sample files here
Open( dir );
Delete Directory( dir );
Create Directory( dir );
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each( {i, idx}, 1 :: 300,
dt0:height[1] = 1000 + i;
dt0 << Save( dir || Char( 1000+i ) || ".csv" );
);
t1 = HP Time();
dtList = Multiple File Import(
<<SET folder=""></SET>
(t2 - t1) / 1000000 = 2.105032;
(t3 - t2) / 1000000 = 2.65675;
Re: 複数のファイルを開くこれはどう:
- 超高速 MFI インポートを使用します (csv オプションを使用)
- Subset(private) を介して入力ファイルを分離します
- データを後処理して意味のある列名を取得します [ここでは単なる前進です]
- ファイルを連結する
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
// then splits the data via Subset(private)
// ... some postprocessing ...
// and then concatenate the files
dir = "$temp/testfiles/"; // make sample files here
open(dir);
Delete Directory( dir );
Create Directory( dir );
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Foreach ({i,idx},1::300,
dt0 << Save( dir || char(i)||".csv" ));
t1=HPtime();
dtList = (Multiple File Import(
<<SET folder=""></SET>
Re: 複数のファイルを開くデータを一時リストに収集し、データ テーブルにブロック書き込みすることにより、なんと改善されました。
良い!
ありがとう@Craige_Hales
Re: 複数のファイルを開くウィッシュリストの投稿を書いているときに、関連するウィッシュを見つけて、そこにリンクを追加しました。
非表示: ファイルを開く希望がすでにあります。プライベートオプション (2022 年以降):
複数のファイルをインポートするためのプライベート オプション
アグレッシブな連結 (2020 年以降):
複数のファイルのインポート - 強制結合
したがって、運が良ければ、それらはすでに Jmp の次のバージョンに実装されています 