多数のファイルの連結こんにちは、みんな、
以下のようにフォルダー内の複数のファイルを連結しようとしています。
Re: 多数のファイルの連結ここにJSLエラーがあると思います
If( Ends With( y[i], "csv" ),
0 // need something here, a zero is good enough
,
Remove From( y, i )
)
隣接する2つのカンマの間には何かが必要です。0は非常に小さな式で、評価結果は0となり、それ以外は何も行いません。(または、!EndsWith(...) を使ってロジックを逆にすることもできます。ここで、! は NOT を意味します。)
Re: 多数のファイルの連結それは素晴らしいですね、残念ながら私はJMP13を使っていますRe: 多数のファイルの連結こんにちは@mjvincent87
元の投稿は数年前のものであり、ディレクトリから複数のファイルをインポートするためのより優れたオプションがいくつかあります。
JMP 14 で導入された複数ファイルのインポートをご覧になりましたか?
新しい複数ファイルインポートプラットフォームは、複数のファイルを単一のJMPデータテーブルに読み込むためのダイアログを起動します。さらに、サイズ、日付、名前、種類でファイルをフィルタリングできるほか、テキストエクスプローラー文書の作成に便利な1列インポートもサポートしています。また、テキストインポートオプションの編集もサポートしています。
乾杯、
スタン
Re: 多数のファイルの連結どこが間違っているのか知りたいです。デバッガーが起動しないのですが、ファイル数が約20,000個あるので、これが問題でしょうか?
Set Current Directory( mypath );
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( Ends With( y[i], "csv" ),
,
Remove From( y, i )
)
);
n = N Items( y );
For( i = 1, i <= N Items( y ), i++,
sname=left(y[i],length(y[i])-4);
/* If the file is the first in the list, open it. Otherwise, open the table, concatenate with the main table, and close the table just opened. */
If( i == 1,
mainDt = Open( mypath || y[i] );
mainDt << New Column ("source", character, set each value ( sname )),
dt = Open( mypath || y[i] ) ;
dt << New Column ("source", character, set each value ( sname ));
mainDt = mainDt << Concatenate( dt, Append to First Table );
Close( dt, NoSave );
Wait( 0 );
)
);
/* Give the final table a name. */
mainDt<< Set Name("Terminal");
Re: 多数のファイルの連結各ファイルのソーステーブル名を組み込んだコードのバリエーションを作成しました。この例ではすべてのtxtファイルを取得していますが、csvファイルやその他の形式でも実行できます。
mypath ="C:\temp\";
Set Current Directory( mypath );
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( Ends With( y[i], "txt" ),
,
Remove From( y, i )
)
);
n = N Items( y );
For( i = 1, i <= N Items( y ), i++,
sname=left(y[i],length(y[i])-4);
/* If the file is the first in the list, open it. Otherwise, open the table, concatenate with the main table, and close the table just opened. */
If( i == 1,
mainDt = Open( mypath || y[i] );
mainDt << New Column ("source", character, set each value ( sname )),
dt = Open( mypath || y[i] ) ;
dt << New Column ("source", character, set each value ( sname ));
mainDt = mainDt << Concatenate( dt, Append to First Table );
Close( dt, NoSave );
Wait( 0 );
)
);
/* Give the final table a name. */
mainDt<< Set Name("Concatenated Files");
Re: 多数のファイルの連結Re: 多数のファイルの連結ありがとう、マット。うまくいきました。本を見てみます。
アドバイスをくれたmpbさん、ありがとう。Re: 多数のファイルの連結このトリックは役に立つかもしれません:
ログイン後、投稿に「返信」して「元の投稿を引用」してください。完全なコードが表示されるので、JMPのスクリプトウィンドウにコピー&ペーストしてください。各行の最初の2文字(> ")を削除して、意図したコードにしてください。その後、返信をキャンセルしてください。Re: 多数のファイルの連結ありがとうございます。以下のコードを使って投稿していただけますか?
Re: 多数のファイルの連結見る:
JMPスクリプトにジャンプ
著者:ウェンディ・マーフリー、ローズマリー・ルーカス
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
122ページ、ソリューション5.16
現在のディレクトリを設定します( "C:\temp2" );
myFiles = ディレクトリ内のファイル( "C:\temp2" );
For( i = 1, i <= N アイテム( myFiles ), i++,
/* ファイルがリストの先頭にある場合はそれを開きます。そうでない場合はテーブルを開き、メインテーブルと連結し、開いたテーブルを閉じます。 */
もし( i == 1,
mainDt = Open( "C:\temp2\" || myFiles )、
dt = Open( "C:\temp2\" || myFiles );
mainDt = mainDt << Concatenate( dt, 最初のテーブルに追加 );
閉じる( dt, NoSave );
待機(0);
)
);
/* 最終テーブルに名前を付けます。 */
mainDt << Set Name( "連結ファイル" );Re: 多数のファイルの連結見る:
JMPスクリプトにジャンプ
著者:ウェンディ・マーフリー、ローズマリー・ルーカス
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
122ページ、ソリューション5.16
現在のディレクトリを設定します( "C:\temp2" );
myFiles = ディレクトリ内のファイル( "C:\temp2" );
For( i = 1, i <= N 項目( myFiles ), i++,
/* ファイルがリストの先頭にある場合はそれを開きます。そうでない場合はテーブルを開き、メインテーブルと連結し、開いたテーブルを閉じます。 */
もし( i == 1,
mainDt = Open( "C:\temp2\" || myFiles ),
dt = Open( "C:\temp2\" || myFiles );
mainDt = mainDt << Concatenate( dt, 最初のテーブルに追加 );
閉じる( dt, NoSave );
待機(0);
)
);
/* 最終テーブルに名前を付けます。 */
mainDt << Set Name( "連結ファイル" );
よろしくお願いします、
-マット