cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Register to attend Discovery Summit 2025 Online: Early Users Edition, Sept. 24-25.
  • New JMP features coming to desktops everywhere this September. Sign up to learn more at jmp.com/launch.
Choose Language Hide Translation Bar
rice_ball
Level II

CSVをMultiple File Importする際に、CSV内部の任意の列のみを選択して積み上げることができるでしょうか?

Multiple File Importは非常に速く動作するので、速度的な不満はないのです。

ですが、読み込むCSVが完全に同じ列を持っていない場合は複数のファイルに分割されてテーブルにされてしまいます。

そのために、各CSVに格納されている任意の列をあらかじめ選択して積み上げを開始すればそれを回避できることができると考えました。

 

そのようなJSLの書き方はありますでしょうか?

ご教授いただけますと幸いでございます。よろしくお願いいたします。

 

Version:JMP18.1.1

dt = Multiple File Import(
	<<Set Folder(
		"C:\Users\624274\Documents\Backup"
	),
	<<Set Show Hidden( 0 ),
	<<Set Subfolders( 0 ),
	<<Set Name Filter( "*;" ),
	<<Set Name Enable( 0 ),
	<<Set Size Filter(  ),
	<<Set Size Enable( 0 ),
	<<Set Date Filter(  ),
	<<Set Date Enable( 0 ),
	<<Set Add File Name Column( 0 ),
	<<Set Add File Size Column( 0 ),
	<<Set Add File Date Column( 0 ),
	<<Set Import Mode( "CSVData" ),
	<<Set Charset( "Best Guess" ),
	<<Set Stack Mode( "Stack Similar" ),
	<<Set CSV Has Headers( 1 ),
	<<Set CSV Allow Numeric( 1 ),
	<<Set CSV First Header Line( 1 ),
	<<Set CSV Number Of Header Lines( 1 ),
	<<Set CSV First Data Line( 2 ),
	<<Set CSV EOF Comma( 1 ),
	<<Set CSV EOF Tab( 0 ),
	<<Set CSV EOF Space( 0 ),
	<<Set CSV EOF Spaces( 0 ),
	<<Set CSV EOF Other( "" ),
	<<Set CSV EOL CRLF( 1 ),
	<<Set CSV EOL CR( 1 ),
	<<Set CSV EOL LF( 1 ),
	<<Set CSV EOL Semicolon( 0 ),
	<<Set CSV EOL Other( "" ),
	<<Set CSV Quote( "\!"" ),
	<<Set CSV Escape( "" ),
	<<Set Import Callback( Empty() )
) << Import Data;

 

1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: CSVをMultiple File Importする際に、CSV内部の任意の列のみを選択して積み上げることができるでしょうか?

The below modification to your supplied script should allow you to take all of the various tables produced by MFI and stack(concatenate) them into one final table, stacking all of the columns with the same names.

Names default to here(1);
mfi = Multiple File Import(
	<<Set Folder(
		"C:\Users\624274\Documents\Backup"
	),
	<<Set Show Hidden( 0 ),
	<<Set Subfolders( 0 ),
	<<Set Name Filter( "*;" ),
	<<Set Name Enable( 0 ),
	<<Set Size Filter(  ),
	<<Set Size Enable( 0 ),
	<<Set Date Filter(  ),
	<<Set Date Enable( 0 ),
	<<Set Add File Name Column( 0 ),
	<<Set Add File Size Column( 0 ),
	<<Set Add File Date Column( 0 ),
	<<Set Import Mode( "CSVData" ),
	<<Set Charset( "Best Guess" ),
	<<Set Stack Mode( "Stack Similar" ),
	<<Set CSV Has Headers( 1 ),
	<<Set CSV Allow Numeric( 1 ),
	<<Set CSV First Header Line( 1 ),
	<<Set CSV Number Of Header Lines( 1 ),
	<<Set CSV First Data Line( 2 ),
	<<Set CSV EOF Comma( 1 ),
	<<Set CSV EOF Tab( 0 ),
	<<Set CSV EOF Space( 0 ),
	<<Set CSV EOF Spaces( 0 ),
	<<Set CSV EOF Other( "" ),
	<<Set CSV EOL CRLF( 1 ),
	<<Set CSV EOL CR( 1 ),
	<<Set CSV EOL LF( 1 ),
	<<Set CSV EOL Semicolon( 0 ),
	<<Set CSV EOL Other( "" ),
	<<Set CSV Quote( "\!"" ),
	<<Set CSV Escape( "" ),
	<<Set Import Callback( Empty() )
);
tables = mfi << Import Data;

dt=new table("final");

dt << concatenate(tables, append to first table(1), create source column(1));
Jim

View solution in original post

2 REPLIES 2
txnelson
Super User

Re: CSVをMultiple File Importする際に、CSV内部の任意の列のみを選択して積み上げることができるでしょうか?

The below modification to your supplied script should allow you to take all of the various tables produced by MFI and stack(concatenate) them into one final table, stacking all of the columns with the same names.

Names default to here(1);
mfi = Multiple File Import(
	<<Set Folder(
		"C:\Users\624274\Documents\Backup"
	),
	<<Set Show Hidden( 0 ),
	<<Set Subfolders( 0 ),
	<<Set Name Filter( "*;" ),
	<<Set Name Enable( 0 ),
	<<Set Size Filter(  ),
	<<Set Size Enable( 0 ),
	<<Set Date Filter(  ),
	<<Set Date Enable( 0 ),
	<<Set Add File Name Column( 0 ),
	<<Set Add File Size Column( 0 ),
	<<Set Add File Date Column( 0 ),
	<<Set Import Mode( "CSVData" ),
	<<Set Charset( "Best Guess" ),
	<<Set Stack Mode( "Stack Similar" ),
	<<Set CSV Has Headers( 1 ),
	<<Set CSV Allow Numeric( 1 ),
	<<Set CSV First Header Line( 1 ),
	<<Set CSV Number Of Header Lines( 1 ),
	<<Set CSV First Data Line( 2 ),
	<<Set CSV EOF Comma( 1 ),
	<<Set CSV EOF Tab( 0 ),
	<<Set CSV EOF Space( 0 ),
	<<Set CSV EOF Spaces( 0 ),
	<<Set CSV EOF Other( "" ),
	<<Set CSV EOL CRLF( 1 ),
	<<Set CSV EOL CR( 1 ),
	<<Set CSV EOL LF( 1 ),
	<<Set CSV EOL Semicolon( 0 ),
	<<Set CSV EOL Other( "" ),
	<<Set CSV Quote( "\!"" ),
	<<Set CSV Escape( "" ),
	<<Set Import Callback( Empty() )
);
tables = mfi << Import Data;

dt=new table("final");

dt << concatenate(tables, append to first table(1), create source column(1));
Jim
rice_ball
Level II

Re: CSVをMultiple File Importする際に、CSV内部の任意の列のみを選択して積み上げることができるでしょうか?

とてもシンプルな解決策ですね。

以下のような流れで達成可能だと理解しました。

1,MFIでまずはそれぞれのテーブルを積み重ねる。

2,tablesの変数で生成されたテーブル名を入手する

3,最終的に統合するテーブルをfinalと定義する

4,1番目にMFIで生成されたテーブルのヘッダーをベースに、2の変数を使ってすべてのテーブルを足し合わせる。

でしょうか?

私の理解はとして上記の流れは正しいでしょうか?

 

このdtをベースに必要な列を切り出せばいいのであると理解しました。

Recommended Articles