こんにちは、
非常に大きなデータテーブル(約600万行)があります。 特に、列として、日付列、製品参照列、および結果列(OKまたはNOKの2つの可能な値があります)があります。 各行はコンポーネントテストに対応します。
ユーザーが期間や日付を選択できるようにしたいと思います。 この期間から、選択した期間に実行されたテストの数と比較して、結果== NOKが最も多い5つの製品参照を見つけて抽出できるようにしたいと思います。
これを最適にスクリプト化する方法がわかりません。
何かアイデアがありましたら、よろしくお願いします
こんにちは、これを行うには多くの方法があります。 特に優れた方法の1つは、クエリ後のスクリプトを使用したJMPクエリビルダーを使用することです。このスクリプトは、分析を続行する前に、開始日と終了日の入力をユーザーに求めます。 このような作業には、JMPクエリビルダーについて学ぶことを強くお勧めします。 残念ながら、ここに入力するには少し多すぎます。
それでもうまく機能する簡単な代替案を紹介します。
まず、1/0データを1と0のように数値で保存し、値ラベルを使用して「OK」や「NOK」などを表示することを常にお勧めします。 あなたの場合、1 => "OK"と0-> "NOK"を使用できます。 (添付のデータ表を参照してください。)
グループごとの平均を要約すると、各グループの「OK」の割合がすぐにわかるため、これをお勧めします。 1と0が逆になっている場合、平均は「NOK」の比率を示します。
したがって、その変更を加えて、もう1つ実行します。テーブル変数を追加します。 テーブル名の近くにある赤い三角形を右クリックし、[新しいテーブル変数]を選択します。 これは、新しいテーブル変数に名前を付けて初期値を指定できるダイアログを示しています。

「Begin」と「End」に対してこれを行うと、数式やスクリプトの列と同じように使用できる2つの値(この場合は文字列ですが、数値も機能します)を定義できます。 後で値を変更するには、値をダブルクリックして編集します。
同じ赤い三角形のメニューを使用して、データテーブルに新しいスクリプトを追加できます。 「Worst5」というスクリプトを追加し、以下のスクリプトのテキストを貼り付けました。
Names Default To Here(1);
dt = Current Data Table();
//change table variable strings to times. the format used for the string must be one that JMP recognizes.
beg = informat(dt:Begin);
end = informat(dt:End);
//subset the table to get only those rows in the time interval of interest
dtSub = dt << subset(selected Columns (0), rows(dt << get rows where (beg < :date < end)));
//summarize this new table to find averages of the OK column, grouping by product. This will be the proportion of "good"
dtSubSum = dtSub << summary(group(:product), mean(:OK));
//sort this new table, ascending
dtSubSum << sort(replace table, by(:"Mean(OK)"n), order(ascending));
//the first 5 rows now have the lowest proportion of "good", hence highest proportion of "bad"
dtSubSum << subset(selected Columns(0), rows(1::5));
//close the first subset table, and the summary table linked to it.
close(dtSub, nosave);

これで、必要なレポートを簡単に取得できます。
1)必要に応じてBeginとEndの値を変更します。
2)「最悪の5」スクリプトの緑色のボタンを押して結果を取得します。
繰り返しになりますが、これを行うには巧妙な方法がありますが、JMPクエリビルダーまたはインタラクティブウィンドウ(表示ツリー)スクリプトのいずれかの知識が必要です。 これらの両方を学ぶことを強くお勧めしますが、それまでの間、テーブル変数と基本的なテーブル操作で実行できることはたくさんあります。
スクリプトを含まない別のオプション:
1)Tabulateプラットフォームを使用して平均を計算し、ローカルデータフィルターを使用して考慮される日付範囲を制限します。
2)完成した表形式のレポートテーブルを右クリックし、[データテーブルに作成]を選択して、結果のデータテーブルを並べ替えて、5つの「最悪の」行(つまり、最も低い5つのOK平均)がテーブルの一番上になるようにします。
3)必要に応じて、これらの5行とサブセットを選択します。
うまくいけば、これらのアイデアの1つがあなたを始めるでしょう。
乾杯、
ブレイディ