フォルダー内のすべての txt ファイルを開き、データをソース名付きの 1 つのファイルに連結します<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />フォルダーから一連のテキスト ファイルを開いて、列の 1 つとして txt ファイルの名前を使用して、データを 1 つのファイルに連結しようとしています。
選択したフォルダー内のすべてのテキスト ファイルを開くコードを添付しました。 ただし、ファイル名を使用して列を作成できません。
データ テーブルの列にデータ (値) を挿入するためのスクリプトを手伝ってもらえますか。
ありがとう
ゴウリ
Re: フォルダー内のすべての txt ファイルを開き、データをソース名の付いた 1 つのファイルに連結します以下のスクリプトを変更してこれを行うこともできます。
// JMP スクリプトにジャンプします
//作成者: ウェンディ マーフリーとローズマリー ルーカス
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//ページ 122、Soultion 5.16
ソースファイル名を組み込むため。
ここのスレッドにもあります
MSの回答からいくつかのことも取り入れました。 MS さん、あなたのスクリプトを使用して連結を完了することができませんでした。
mypath = "C:\jmp\";
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: フォルダー内のすべての txt ファイルを開き、データをソース名の付いた 1 つのファイルに連結しますありがとう、これはとても役に立ちました
Re: フォルダー内のすべての txt ファイルを開き、データをソース名の付いた 1 つのファイルに連結しますこれは機能するはずです(スクリプトからの編集された抜粋)
名前=左( y [ 1 】 、長さ( y [ 1 】 ) - 4 ) ;
開ける(
「C:jmp」 || y [私] 、
列(アカウント番号=キャラクター、 。 =省略) 、
インポート設定(
行末( CRLF 、 CR 、 LF ) 、
フィールドの終わり(コンマ) 、
引用文を削除する( 1 ) 、
アポストロフィを引用符として使用する( 0 ) 、
ファイル全体をスキャン( 1 ) 、
ラベル( 0 ) 、
列名の開始( 1 ) 、
データの開始( 1 ) 、
読むべき行(全て) 、
年の規則( 「10-90」 )
)
) <<新しい列( "ソース" 、キャラクター、それぞれの値を設定します(名前) ) ;
唯一の変更は New Column() の配置と内部のコードです。
ただし、各テーブルに新しい列を追加する代わりに、Concatenate() の「ソース列の作成」オプションを使用することもできます。
以下のスクリプトを試してください。この問題に対する代替アプローチでは、Concatenate() の組み込み機能でソース列を処理することもできます。
私の進路= 「C:\jmp」 ;
y =ディレクトリ内のファイル(私の進路) ;
//テキスト以外のファイルをすべて y から削除します
のために(私= N 個のアイテム( y ) 、私> 0 、私--、
もし(で終わる( y [私】 、 "TXT" ) 、
、
から削除( y 、私)
)
) ;
n = N 個のアイテム( y ) ;
//open()式のリストy1を作成
y1 = {} ;
のために(私= 1 、私<= n 、私++、
y1 [私】 =解析する(
評価インサート(
"Open(mypath||\!"^y ^\!",columns(Acct num = 文字, . = 省略),
インポート設定(
行末(CRLF、CR、LF)、
フィールドの終わり(カンマ)、
引用符を削除( 1 )、
アポストロフィを引用符 ( 0 ) として使用します。
ファイル全体をスキャン(1)、
ラベル( 0 )、
列名 Start( 1 )、
データ開始(1)、
読み取る行(すべて)
))」
)
)
) ;
// (開いて) ファイルを連結します
評価( y1 [ 1 】 ) <<連結する(
評価リスト( y1 [ 2 :: n 】 ) 、
ソース列の作成
) ;
//サブファイルを閉じる
のために(私= 1 、私<= n 、私++、
近い(データ表( y [私] ) 、保存しない)
) ;