欠測値を含む比較の多くは欠測値を戻し、真または偽は戻されません。そのため、スクリプトの処理が止まらないよう、常に真となる結果を含めることが大切な場合があります。データテーブル列に1、2、3という値が含まれており、列「A」に欠測値が1つあるとします。 列「B」の計算式が比較を設定します。
New Table( "比較のテスト",
Add Rows( 4 ),
New Column( "A",
Numeric,
"Continuous",
Format( "Best", 10 ),
Set Values( [1, 2, 3, .] )
),
New Column( "B", Character, "Nominal", Formula( If( :A, "true", 1, "false" ) ) )
);
「A」の値が欠測値でも0でもない場合、 結果は"true"。最初の3行では、この比較の結果は真です。
|
|
•
|
セルに空でない文字列が含まれる場合、最初の比較で失敗します。aが文字列の場合、以下のスクリプトは欠測値を返します。aが数値であればこの比較は動作します。
|
a = "a";
If( a, "真", "偽" );
•
|
1つの値が偽で、もう1つが欠測値の場合、Or()は欠測値を戻します。その代わりに「偽」を返すようにするにはOrMZ()を用います。詳細については、『スクリプト構文リファレンス』の「JSL関数」章を参照してください。
|
•
|
1つの値が偽で、もう1つが欠測値の場合、And()は欠測値を戻します。その代わりに「偽」を返すようにするにはAndMZ()を用います。詳細については、『スクリプト構文リファレンス』の「JSL関数」章を参照してください。
|
いずれかの値が欠測値であるとわかっている場合は、Is Missing()を使った比較も可能です。前述の例は、欠測値に対して"missing"を戻すように書き直すことができます。その場合、次のようになります。
If( :A, "true", Is Missing( :A ), "missing", "false" );
上記の式は、Aが欠測値ではなく、ゼロでない場合は”true”を返し、Aが欠測値の場合は”missing”を返し、それ以外の場合は”false”を返します。
欠測値が0の可能性がある場合は、代わりにZero Or Missing()関数を使用します。
Zero Or Missing( A );
この式は、Aが0または欠測値の場合に1を戻します。