こんにちは、誰かこのコードを修正するのを手伝ってくれませんか?フォルダーごとに CSV ファイルを連結しようとしています。 ユーザーはフォルダーを選択する必要があり、すべての修飾された CSV フォルダーが連結され、フォルダー名に従って保存されます。 この方法では、ユーザーはスクリプトの実行ごとに 1 つのフォルダーを選択します。
ただし、私が今やろうとしているのは、ユーザーにメインフォルダーを選択させてからスクリプトを実行させ、サブフォルダーごとにデータを連結することです(前の方法と同様に、フォルダー名をファイル名として個別に保存します)。
ただし、これらのコードでは、すべての csv ファイルが 1 つのファイルに連結されます。 再帰がどのように機能するかを変更して説明していただけますか? そして、メインフォルダーを開くだけで、このファイルを個別に保存(フォルダーごとにデータを連結)するにはどうすればよいですか。 JMP15を使用しています。 ありがとう
p = pick Directory("Select a Folder");<BR />//f = Files In Directory(p);
f = Files In Directory(p, recursive(1));
Dir = Word(-1, p, "/"); //get filename
saveDir = Substr( p, 1, Length( p ) - Length( Word( -1, p, "\/" ) ) - 1 ); //save file outside main folder
/* Removes the file names from the list f which are not CSV files */
for(j=1,j<=N Items(f),j++,
If (Substr(f[j],Length(f[j])-2,3)!= "CSV",
RemoveFrom(f,j,1);
j=j-1;
);
);
A = {}; /* creates a empty list for storing the names of each data table */
B = {};
C = {};
D = {};
k = {};
m = {};
/*Opens each one of the CSV files and deletes all unwanted rows */
for(j=1,j<=N Items(f),j++,
CSV = Open(Concat(p,f[j]), End of Field(comma), Strip Quotes(1), Labels(1),
Column Names Start(3), Data Starts(4), Columns(:MRR=Numeric));
colname = {};
colname = CSV<<GET column="" names="">20 & Contains(colname,"Weight")>50,
InsertInto(A,CSV);
CSV<<SELECT where="">1,
dt2 = dt1<<CONCATENATE>1,
dt3 = dt1<<CONCATENATE></CONCATENATE></CONCATENATE></SELECT></GET>