ループのJMPスクリプトの問題こんにちは、2つの質問があります。
Ques1-
単純なデータ(添付)とスクリプトが正常に機能していますが、それをforループに変換したい限り。正しいことを得ていません。
AIM-各電流のtop10%の抵抗値が必要です。私のデータは対称的ではありません。つまり、各電流のデータポイントの数が異なります。
同じデータでは現在の値は7つしかなく、実際のデータでは数百の値をとることができます。
アプローチ-Quantileテーブルを生成し、抵抗値を90%の分位値で比較して、追加の列「Top10%」を追加しています。7つの現在値を持つサンプルデータではすべてが正常に機能していますが、ループが必要です。スーパーユーザーは、私のforループで私がしている間違いを私に指摘することができます。これはforループの実装方法を学ぶのに役立ちます。
何か助け?
Ques2-上位95%のデータを取得する最良の方法は何ですか?
ここで何か助けはありますか?
スクリプティングRe:ループのJMPスクリプトの問題以下のスクリプトは、あなたが望む結果を得るためのより簡単な方法論だと思います

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);
Re:ループのJMPスクリプトの問題はい、まったく問題ありません。それを行うためのはるかに優れたシンプルな方法。サマリーテーブルから分位点も取得できることを知りませんでした。私はあなたが説明した方法でそれを実装しています。
分位数と上位10%のデータを除いて、私の「forループ」で何が問題でしたか
助けてくれてありがとう。
再:ループのJMPスクリプトの問題For()ループロジックについて
- 列に含めることができる数式は1つだけです。 For()ループ内に式の定義があると、ループごとに異なる式が指定されます。 JMPが何をするのか正確にはわかりませんが、せいぜい、新しい数式が作成されたときに各数式が置き換えられ、最後に作成された数式だけになってしまいます。
- 各If内で「失敗」値を設定することにより、ロジックが正確になるのは、最後のレベルが現在の行のレベルである場合のみです。 それ以外の場合、たとえば、レベル3が特定の行の現在のレベルであるとします。 JMPは、レベル1のIfステートメントの値をFail、レベル2をFail、レベル3をTop10%に設定しますが、For()ループは続行されるため、レベル4をテストするとFail ...になります。.....そして残りのすべてのレベル。
- 数式の外部で定義された変数値(つまり、dtF2、dtQ、およびdtQデータテーブル内の列への参照)を持つ列の数式では、これらの値とデータテーブルは、データテーブルが式が開かれます。 したがって、このような数式を使用する場合は、データテーブルで数式が実行されたら、数式を削除する必要があります。
dtF2:Name("Top10%") << delete formula;
これは私がうまくいくと思う式のバージョンです.....私はそれをテストしていませんが、あなたはアプローチを見ると思います。
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);