欠測値を含んだデータを比較する場合は、常に真であるような条件を指定するか、Is Missing()やZero Or Missing()などの関数を使用しない限り、間違った結果が戻される可能性があります。また、(数値と文字など)タイプが異なるデータや行列内のデータを比較する場合も、混乱を招くことがあります。
表5.5は、そのような比較や行列の例と結果を示しています。比較で使用する演算子については、演算子を参照してください。特定の日付時間関数については、『スクリプト構文リファレンス』の比較関数を参照してください。
注: ここでの行列は、行数と列数が同じものでなければなりません。
テスト |
結果 |
説明 |
---|---|---|
m=.; m==1 |
. |
等しいかどうかのテストに欠測値を指定した場合は、欠測値を戻す。 |
m=.; m!=1 |
. |
等しくないかどうかのテストに欠測値を指定した場合は、欠測値を戻す。 |
m=.; m<1; m>1;など |
. |
欠測値を使った比較はどれも欠測値を戻す(真である可能性がある場合は、次を参照)。 |
m=.; 1<m<0 |
0 |
(論理演算子と同様)2つ以上のオペランドを取る比較では、偽は欠測値に優先するため、真である可能性のない欠測値が含まれた比較は偽を戻す。 |
{a, b}==List(a, b) |
1 |
リストの項目が等しいかどうかのテストは、結果として1つの値を戻す。 |
{a, b}<{a, c} |
. |
リストの項目の比較はできない。 |
1=="abc" |
0 |
等しいかどうかのテストでデータのタイプが異なっている場合は、偽を戻す。 |
1<="abc" |
. |
データのタイプが異なっている比較は、欠測値を戻す。 |
[1 2 3]==[2 2 5] |
[0 1 0] |
行列が等しいかどうかのテストは、要素ごとの結果を行列で戻す。行列と行列を比較する場合、要素ごとに比較を行い、結果の1と0の行列を戻します。 |
[1 2 3]==2 |
[0 1 0] |
行列とすべての要素が2である行列が等しいかどうかのテスト。行列を数値と比較する場合、数値はすべての要素がその値である行列として扱われます。 |
[1 2 3] < [2 2 5] |
[1 0 1] |
行列の比較は、要素ごとの比較の結果を行列で戻す。 |
[1 2 3] < 2 |
[1 0 0] |
行列とすべての要素が2である行列との比較。 |
Is Missing(m) |
1 |
欠測値の場合には1を戻し、そうでない場合は0を戻す。文字の欠測値の場合は、空白の引用符を使って比較することもできます(例: m == "")。 |
Zero Or Missing(m) |
1 |
値が0または欠測値の場合に1を戻す。引数は数値か行列でなければならず、文字列は不可。 |
All([2 2]==[1 2]) |
0 |
要素ごとの比較を要約する。すべての比較が真の場合にのみ1を戻し、それ以外の場合は0を戻す。 |
Any([2 2]==[1 2]) |
1 |
要素ごとの比較を要約する。いずれかの比較が真の場合に1を戻し、そうでない場合は0を戻す。 |