2 つの列の値を比較する JSL 条件付き複数 if ステートメントデータテーブルで、2 つの異なる列の値を比較し、比較結果を新しい列に入れたいと考えています。 数式を使用して機能させることはできますが、それをJSLに変換することはできません。 JSLスクリプトとして以下の式が必要です。
MHD < MTV * -6 => 0 の場合
MHD > MTV * 6 => 0 の場合
それ以外の場合 => 1
ここで、MHD と MTV は、連続数値を持つ 2 つのデータ列です。 これら 2 つの列の値を行ごとに比較しています。
以下のスクリプトを試しましたが、機能しません。
新しい列 (「P/F」、数値、「公称」、Formula(If(:MHD < :MTV * -6, 0, :MHD > :MTV*6, 0, 1)))
ご指導いただければ幸いです。
Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメント素晴らしいヒントをありがとう。 これで、特殊文字を使用する列ラベルを変更する必要がなくなりました。Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメントJSL は、& などを名前の一部としてではなく、計算要素として解釈します。JSL が列名を正しく解釈するために、列名の前後に配置できる :Name() 関数を見てください。
MDH 列の名前が MDH/PQR である場合、JSL はその名前を、MDH という変数を PQR という変数で除算する数学的計算として解釈します。しかし、それを次のように参照すると、
:名前( "MDH/PQR" )
すべてうまくいきます。
コードでは次のようになります
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :Name("MDH/PQR") < :MTV * 6,1,0)))Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメント素早い対応と問題を解決するための素晴らしいアイデアをありがとうございました。 私のスクリプトは現在動作しています。 もう 1 つ気になったのは、列ラベルのいずれかに「-」または「&」が含まれている場合、スクリプトが機能しないということです。 これらの特殊文字が削除されると、スクリプトは問題なく動作しました。Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメントありがとう。 このソリューションも完璧に機能しました。Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメントFormula( If( :MDH < :MTV * -6 | :MDH > :MTV * 6, 0, 1 )
多分?
Re: 2 つの列の値を比較する JSL 条件付き複数の if ステートメントJSL の処理には小さな問題があります
:MTV * -6
JSL では、-6 を負の数としてではなく、減算として見ることができます。したがって、次のように参照する方が賢明です。
:MTV * (-6)
JMP がそれを正しく解釈できるようにするためです。
以下に、必要な結果を得るために数式を設定するさまざまな方法をいくつか示します。
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH < :MTV * 6,1,0)))
//or
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH | :MDH > :MTV * 6,0,1)))