公開日: 11/25/2021

欠測値

欠測値を含む比較の多くは欠測値を戻し、真または偽は戻されません。そのため、スクリプトの処理が止まらないよう、常に真となる結果を含めることが大切な場合があります。データテーブル列に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" ) ) )
);

次の値が列「B」に入れられます。

"true"

"true"

"true"

"false"

このスクリプトは次のように機能します。

If(

比較を開始する。

:A, "true",

「A」の値が欠測値でも0でもない場合、 結果は"true"。最初の3行では、この比較の結果は真です。

1, "false"

1の値は常に真であるため、欠測値は"false"を戻します。

);

比較を閉じる。

メモ:

セルに空でない文字列が含まれる場合、最初の比較で失敗します。aが文字列の場合、以下のスクリプトは欠測値を返します。aが数値であればこの比較は動作します。

a = "a";
If( a, "真", "偽" );

1つの値が偽で、もう1つが欠測値の場合、Or()は欠測値を戻します。その代わりに「偽」を返すようにするにはOrMZ()を用います。『スクリプト構文リファレンス』のOrMZ(a, b)を参照してください。

1つの値が偽で、もう1つが欠測値の場合、And()は欠測値を戻します。その代わりに「偽」を返すようにするにはAndMZ()を用います。『スクリプト構文リファレンス』のAndMZ(a, b)を参照してください。

MatchMZ()は、欠測値を0として扱う以外はMatch()と同じです。

IfMZ()は、欠測値を0として扱う以外はIf()と同じです。

Is Missing

いずれかの値が欠測値であるとわかっている場合は、Is Missing()を使った比較も可能です。前述の例は、欠測値に対して"missing"を戻すように書き直すことができます。その場合、次のようになります。

If( :A, "true", Is Missing( :A ), "missing", "false" );

上記の式は、Aが欠測値ではなく、ゼロでない場合は"true"を返し、Aが欠測値の場合は"missing"を返し、それ以外の場合は"false"を返します。

Zero Or Missing

欠測値が0の可能性がある場合は、代わりにZero Or Missing()関数を使用します。

Zero Or Missing( A );

この式は、Aが0または欠測値の場合に1を戻します。

ヒント: 既知の値を、明示的な欠測値と比較することはできません。比較できるのは、欠測値を含む変数や行列などだけです。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).