こんにちは - 私は jsl スクリプトの初心者で、次のように jsl ステートメントを構築しようとしています。
列 A が空の場合、列 C = 空、
それ以外の場合、列 A < 500 および列 B = 200、列 C = 0、
それ以外の場合、列 A>500、列 C = 1。
これを行うには、JSL 式をどのように構成すればよいでしょうか?ありがとう!
ありがとうクレイジ。数式をデバッグするための役立つヒント。それは有り難いです!
エッジケースに注意してください。
- A == 500、正確には
- A<500 および B != 200
何かが抜け落ちた場合に注意を引くために、その他の値として 999 を追加する価値があるかもしれません。 秘密の場合
B が欠損値の場合、B!=200 テストは次のようになります。ないTRUE または FALSE です。 上記の例はおそらく期待どおりの動作をしますが、B==200 が最後の else 値 (999 など) の直前にあり、B が欠落している場合は、Otherth 値は取得されません (TRUE または FALSE ではないため)。 ) -- 欠落します。
これは正しいです?
New Table( "Untitled",
Add Rows( 12 ),
New Column( "A",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Set Values( [., ., 400, 400, 550, 550, ., ., 400, 400, 550, 550] )
),
New Column( "B",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [200, 61, 200, 66, 200, 60, 200, 51, 200, 61, 200, 65] )
),
New Column( "C",
Numeric,
"Ordinal",
Format( "Best", 10 ),
Formula( If( Is Missing( :A ), ., :A < 500 & :B == 200, 0, :A > 500, 1 ) ),
Set Selected
)
);
空のセルが認識され、空として正しく設定され (イェーイ)、2 番目の条件が正しく考慮され、0 が適切に設定されますが、3 番目の (else if) 条件には到達しません。つまり、1 になるべき場合がたくさんあるにもかかわらず、決して 1 にはなりません。
ありがとうロン。何らかの理由で「空」条件が登録されません。つまり、:A が空の場合、:C は 1 になります。
??
@learning_JSL
これを試して:
names default to here (1);
dt = Current data table();
dt << new column ("C","Numeric", "ordinal", Formula (If(
Is Missing( :A ),.,
:A < 500 & :B == 200, 0,
:A > 500, 1
)));
これは、JSL インデックス、ヘルプ メニュー、Google を徹底的に検索し、何度も試行錯誤した結果、私が思いついたものです。しかし、うまくいきませんでした。列 C の式は次のとおりです。
formula(
If(
Is Missing( :column A ), Empty(),
:column A < 500 & :column B == 200, 1,
:columnA > 500, 0
)
)