IMFの機能をより効率的にします。添付の例(.CSV)のようなファイルが何千個もあります。時間情報はraw 102にあり、測定データはraw 242から始まります。
現在、ファイルのインポートを2回行っています。1回は時間情報用、もう1回はテストデータ用です。その後、update関数を使用して時間情報をテストデータテーブルにインポートします。
このロジックは少数のファイルでは機能していましたが、時間情報の IMF が raw 102 以降のすべてのデータを取得するため、多数のファイルでは効率的ではありません。
時間情報のインポート用に IMF 関数の最後のデータ行を設定する方法はありますか? そうすれば、余分な 141 行/ファイルをインポートする必要がなくなります。
基本的なデータ分析とモデリングRe: IMF 機能の効率化。私の知る限り、複数ファイルのインポートではそれを制御できません。JMPですべてのデータをインポートし、結果のテーブルをクリーンアップしてみてはいかがでしょうか? あるいは、.csvファイルから数行だけをエクスポートしたい場合は、JSLとテキストファイルの読み込み機能を使うこともできます。
Re: IMF 機能の効率化。こんにちは、Jarmoさん
JSLを使って、以下が作成したスクリプトです。問題なく動作していますが、テストを重ねるにつれてデータセットが大きくなり、このロジックは効率的ではありません(特に時間テーブルのインポートは、1行だけをインポートする方法がわからないため)。
Names Default To Here( 1 );
dir=Pick Directory( "Select Data Directory");
// Import multiple files
Time=Multiple File Import(
<
<SET folder="">
= 1, i--, If( (Col N Missing( Column( i ) ) / N Row()) == 1, Data Table( dt1 ) << delete columns( i ) ) ); For( i = N Col( dt2 ), i >= 1, i--, If( (Col N Missing( Column( i ) ) / N Row()) == 1, Data Table( dt2 ) << delete columns( i ) ) ); Data Table( dt1 ) :File Name<< Set Display Width( 300 ); Data Table( "Time" ):Column 3 << Set Name( "Test Time" ); // Update data table Data Table( "Test Data" ) << Update( With( Data Table( "Time" ) ), Match Columns( :File Name = :File Name ), Add Columns from Update Table( :Test Time ) ); // Close Data Table: Time Close( Data Table( "Time" ), NoSave );
</SET>
Re: IMF 機能の効率化。ファイルは何個ありますか? 1回のインポートで十分です。その後は、JMP内でデータを適切にクリーンアップするだけです。
Re: IMF 機能の効率化。現在、約20,000個のファイルがあり、毎日1,000~1,500個の新しいファイルが追加されます。スクリプトの実行には約7分30秒かかります。タイムテーブルには不要な行が含まれているため、クリーンアップ前に280万行をインポートすることになります。
Re: IMF 機能の効率化。新しいファイルだけをインポートしますか、それともファイル数が増えていくフォルダー全体をインポートしますか?