データフォルダ内のデータ結果をグラフィカルに比較するやあ、
私はJMPにかなり慣れていないので、できれば自動化されたJMPスクリプトまたは専門家が推奨する他のソリューションを使用して、次の非常に困難な操作を自動的に実行しようとしています:)。
私のデータ:
結果の 2 つのフォルダー、datafolder1 と datafolder2 があります。 これらは技術的には同じ測定値です。設定にわずかな違いがあり、変更後と変更前に同じ測定値が繰り返されます。
各フォルダーには、.txt テーブル形式の結果ファイルである複数の .txt ファイルがあります。 .txt ファイルの各フォルダーの名前は同じで、列名も同じです。 実際には、数値データのみがファイルごとにわずかに異なります。
私が欲しいもの:
同じ名前の .txt を使用して、各列の結果 datafolder1 と結果 datafolder2 の違いをグラフィカルに比較し、結果の .pdf 出力を生成したいと考えています。 必要な出力を .pdf 形式で生成することはできましたが、グラフ ビルダーでその出力を得るには 8 ~ 12 時間の手作業が必要でした。 出力ファイルは「wanted_output.pdf」と呼ばれます。 今、私は他にも多くの同様のケースを抱えており、これを手動で行うには何ヶ月もかかります.
データファイルは添付の通りです。 [データは削除されました]
事前に感謝します。この問題に何ヶ月も悩まされてきました。JMP がこれに対する簡単な解決策を提供してくれることを願っています。
分析データ表グラフィックスクリプティングRe: データフォルダ内のデータ結果をグラフィカルに比較するこんにちは、txnelson と Ian
魔法のように動作します! ありがとう!
datafolder2 変数を folder1 から folder2 に変更する必要がありました。
また、何らかの理由で .pdf 印刷が適切にスケーリングされなかったため、デフォルトの印刷設定ファイル => ページ設定を変更する必要がありました。
問題は解決しました。みんなの助けに感謝します!
PS。 最初の投稿からデータを削除する必要がありましたが、技術的には前後のデータ フォルダーのタイプはこのスクリプトで動作します。
Re: データフォルダ内のデータ結果をグラフィカルに比較するそして、その代わりとして@txnelsonのアプローチ、および元のアイデアに従う (および「サブフォルダーを含める」オプションを使用する):
NamesDefaultToHere(1);
// Unzip the example file 'net_data.zip' to your Desktop
// Generated via 'File > Open Multiple..': tabList is a list of 'paired' tables
// that are built automatically according to the commonality of column names
tabList =
Multiple File Import(
<<SET folder=""></SET>
いつものように、最終結果の整合性は、データの規則性について何を仮定できるか (およびできないか) に依存します。
Re: データフォルダ内のデータ結果をグラフィカルに比較するいくつか推測する必要がありましたが、以下のスクリプトは、datatable フォルダーにあるファイルごとに個別の pdf を作成します。グラフのフォーマットを少し変更しました。私が最もよく判断できるように、すべて同じ情報を示していますが、わずかに異なる形式になっています。
スクリプトでは、フォルダー 1 とフォルダー 2 へのパスを入力する必要があります。現在、pdf は $TEMP ディレクトリに保存されています。それらを実際のフォルダーに変更する必要があります。
Names Default To Here( 1 );
// Set folder1 and folder2 paths
folder1 = "path to folder 1";
folder2 = "path to folder 2";
// Get files in datafolder 1 folder
fileNamesList = Files In Directory( folder1 );
For( File = 1, File <= N Items( fileNamesList ), File++,
// Open the file in datafolder1
dt1 = Open(
folder1 || "/" || fileNamesList[File],
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Comma, CSV( 1 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
// New column: Index
dt1 << New Column( "Index", Numeric, "ordinal", Format( "Best", 12 ), Set Each Value( Row() ) );
// New column: Index
dt1 << New Column( "Measured", Character, Set Each Value( "Before" ) );
// Open the file in datafolder2
dt2 = Open(
folder1 || "/" || fileNamesList[File],
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Comma, CSV( 1 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
// New column: Index
dt2 << New Column( "Index", Numeric, "Ordinal", Format( "Best", 12 ), Set Each Value( Row() ) );
// New column: Index
dt2 << New Column( "Measured", Character, Set Each Value( "After" ) );
// Concatenate tables
// → Data Table( "HW.DiodeTest.ADP_diodes" )
dt1 << Concatenate( dt2, Append to first table );
// Close the After data table
Close( dt2, nosave );
// get all continuous columns in the data table
colNamesList = dt1 << get column names( continuous, string );
theJournal = New Window( fileNamesList[File], <<JOURNAL></JOURNAL>
Re: データフォルダ内のデータ結果をグラフィカルに比較するJMPコミュニティでプライベートメッセージを送っていただけますか? メールで少し簡単にできるかもしれません。その後、最終的な解決策をここに投稿できます。
Re: データフォルダ内のデータ結果をグラフィカルに比較するジャルモさん、早速のお返事ありがとうございます!
これをすべて行うにはJSLが必要ですが、他の複数のケースでこれを行うには時間がかかりすぎます。
アーキテクチャの観点では、次の JSL はうまくいく可能性があります。
1.両方のフォルダからすべてのファイルをインポートします。
2.参加/&結果を1つのファイルに連結すると、JMPはテーブル名が同じ(XXXXの)場合、何らかのインデックスを自動的に追加するようです。
3. 列名をアルファベット順にソートします。
4. 列 1 と 2 を 1 つのプロットにプロットし、列 3 と 4 を次のプロットにプロットし、列 5 と 6 を次のプロットにプロットします。残りの列がなくなるまで、次の数値のプロットを繰り返します。
それはすべて簡単に聞こえますが、私はJSLの初心者しか理解していません。各ステップのヒントと例はありますか?
Re: データフォルダ内のデータ結果をグラフィカルに比較するファイル/複数ファイルのインポートを使用すると、かなり簡単に始めることができます。 ファイルをインポートするときに、デフォルト設定を変更する必要があります (セパレーターをコンマからタブに変更します)。
この時点から、データテーブルの結合を開始できます。 JSL と、前のステップで取得したばかりのデータテーブルのリストをループする以外に、これを行う簡単な方法があるかどうかはわかりません。
両方のフォルダーに対してこのプロセスを繰り返し、データ テーブルを連結して、最後にグラフ ビルダーでグラフを作成します (グラフを作成する前にデータを積み重ねる必要がある場合があります)。