複数のCSVファイルのまとめデータベースのように約400個のCSVファイルがあるデスクトップ上のファイルフォルダーにJMPを指示し、一連の列を作成し、ファイルごとに1行のサマリーテーブルを作成するにはどうすればよいですか。私はこれを個別に行うことができますが、それは永遠にかかり、自動化するスクリプトを開発することができればと思っていました。
再:複数のCSVファイルの概要あなたは正しいです.....間違いを捕まえてくれてありがとう
私はあなたが見つけた間違いを修正するために私のオリジナルのエントリーを修正しました
再:複数のCSVファイルの概要私はあなたがデータテーブルの代わりにサマリテーブルを追加するつもりだったと思いますか?
Names Default To Here( 1 );
dir = Pick Directory();
files = Files In Directory( dir );
dt = New Table( "concat", New Column( "File", character ) );
For( i = 1, i <= N Items( files ), i++,
If( Ends With( files[i], "csv" ), //just a check to make sure it's a csv
// Open the file
dt1 = Open( dir || files[i] );
//Get all of the numeric columns from the just opened file
thecolumns = dt1 << get column names( numeric );
// Create an output table of one row that contains the summary
// As many stats as desired can be added to the below to get all of the
// ones that are needed
dt1 << Summary( Mean( Eval( thecolumns ) ), Freq( "None" ), Weight( "None" ), output table name("tmpdt"));
// Add the summary table to the summary table
dt << concatenate( Data Table("tmpdt"), append to first table );
// Since what is wanted is the ID, not the file name, and the ID is
// the Sheeet name in the Excel spreadsheet, one has to get that value
// the the name of the data table, since that is where JMP 13 places the
// sheet name
dt:File[N Rows( dt ) ] = dt1 << Get Name;
// Close the no longer needed raw data table
Close( dt1, no save );
)
);再:複数のCSVファイルの概要これが私が必要とするスクリプトです。 これは非常に簡単で、すべての数値列を要約してExcelシート名を新しい列として表示します。
以下は、次の返信で見つかった問題に基づいて編集されています
Names Default To Here( 1 );
dir = Pick Directory();
files = Files In Directory( dir );
dt = New Table( "concat", New Column( "File", character ) );
For( i = 1, i <= N Items( files ), i++,
If( Ends With( files[i], "csv" ), //just a check to make sure it's a csv
// Open the file
dt1 = Open( dir || files[i], private );
//Get all of the numeric columns from the just opened file
thecolumns = dt1 << get column names( numeric );
// Create an output table of one row that contains the summary
// As many stats as desired can be added to the below to get all of the
// ones that are needed
dt2 = dt1 << Summary( Mean( Eval( thecolumns ) ), Freq( "None" ), Weight( "None" ) );
// Add the summary table to the summary table
dt << concatenate( dt2, append to first table );
// Since what is wanted is the ID, not the file name, and the ID is
// the Sheeet name in the Excel spreadsheet, one has to get that value
// the the name of the data table, since that is where JMP 13 places the
// sheet name
dt:File[N Rows( dt ) ] = dt1 << Get Name;
// Close the no longer needed raw data table
Close( dt1, no save );Close( dt2, no save );
)
);
再:複数のCSVファイルの概要これがVinceの反応のバリエーションです。これにより、各ファイルで異なる列名を使用できます。
Names Default to here(1);
dir = pick directory();
files = files in directory(dir);
//table to hold summary data
dts = New Table("Summary", New Column("filename", character));
for(i=1, i<=nitems(files), i++, //for each filename
if(endswith(files[i], "csv"), //if file is a csv
//open the file
dt1 = open( dir||files[i], private );
//add a row to the summary table
dts << Add Rows(1);
//save the filename to the data table
Column( dts, "filename" )[i] = files[i];
//get list of columns
cols = dt1 << Get Column Names();
//for each column
for ( c=1, c <= N Items(cols), c++,
//add mean column to summary table if it isn't already there
if ( Contains( dts << Get Column Names(); , Parse( Char( cols[c] ) || "_mean" ) ) < 1,
dts << New Column( Char( cols[c] ) || "_mean" );
);
//find the mean and write it to summary table
Column( dts, Char( cols[c] ) || "_mean" )[i] = ColMean( Column( dt1, cols[c] ) );
//add max column to summary table if it isn't already there
if ( Contains( dts << Get Column Names(); , Parse( Char( cols[c] ) || "_max" ) ) < 1,
dts << New Column( Char( cols[c] ) || "_max" );
);
//find the max and write it to summary table
Column( dts, Char( cols[c] ) || "_max" )[i] = ColMax( Column( dt1, cols[c] ) );
); //end loop each column
//close file
close(dt1, no save);
); //end check for csv
); //end loop for each file再:複数のCSVファイルの概要要約すると?
再:複数のCSVファイルの概要CSVファイル内のデータは次のようになります。ファイル名は患者IDでもあります。列見出しで要約して、列内のファイルIDを使用して要約データの表を作成する方法を教えてください。スクリーンショットの下部に、ファイル名がどのようになっているかがわかります。
すべてのCSVをJMPファイルに変換できますか?それが助けになるかどうかわからない。
誰もがデータテーブルツールアドインがこの場合に機能するかどうか知っていますか?
再:複数のCSVファイルの概要2つの偽のテーブルのスクリーンショットを撮って、最終結果をどのように見せたいですか。私はあなたが何を求めているのかわからない。
再:複数のCSVファイルの概要遅れて申し訳ありません。勤務中であり、患者の世話をしなければならなかった。さて、これに戻りましょう。
いいえ、必ずしも同じ列(A、B、Cなど)を持っているわけではありませんが、同じ名前を持っています。
ブライアン
再:複数のCSVファイルの概要(この答えは無視してください。Vinceの方がはるかに良い方法です。)
ファイルごとの統計が必要な場合は、Vinceの回答のバリエーション。 私はまた列が一貫していると想像します...
path = "$desktop/csvFiles/";
files = Files In Directory( path );
answers = New Table( "Summary",
New Column( "N Rows", Numeric, "Continuous", Format( "Fixed Dec", 12, 0 ), Set Values( [] ) ),
New Column( "Mean(x)", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "Mean(y)", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "Mean(z)", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "sourceFile", character )
);
For( iFile = 1, iFile <= N Items( files ), iFile += 1,
file = path || files[iFile];
dt = Open( file, "text" );
dt2 = dt << Summary( Mean( :x ), Mean( :y ), Mean( :z ), Freq( "None" ), Weight( "None" ) );
answers << addrows( 1 );
answers:sourceFile = file || " " || Format( Creation Date( file ), "m/d/y h:m:s" );
answers:N Rows = dt2:N Rows[1];
answers:name( "Mean(x)" ) = dt2:name( "Mean(x)" )[1];
answers:name( "Mean(y)" ) = dt2:name( "Mean(y)" )[1];
answers:name( "Mean(z)" ) = dt2:name( "Mean(z)" )[1];
Close( dt, nosave ); // linked table closes too
);
私のファイルはこんな感じでした
x、y、z
1,2,3
4,5,6
手書きで作成したファイルからテーブルスクリプトを使用して概要スクリプトを取得しました。 変数をコピーするためのより良い方法があるかもしれません。JMP 13では、あなたはアイデアを使うことができますここに行全体を1つのステートメントに代入します。
再:複数のCSVファイルの概要だから私はこれについていくつかの仮定をしています。私はオフになる可能性があります。
すべてのcsvファイルには同じ列があります。
各ファイルの各列の集計サマリー(たとえば)を作成します。
Names Default to here(1);
dir = pick directory();
files = files in directory(dir);
dt = New Table("concat", New Column("File", character));
for(i=1, i<=nitems(files), i++,
if(endswith(files[i], "csv"), //just a check to make sure it's a csv
//break();
dt1 = open(dir||files[i], private);
dt1 << New Column("File", character, set each value(files[i]));
dt<<CONCATENATE></CONCATENATE>