2017-09-20 3 views
2

私のコードを読みやすくするために、私は次のような状況に直面しています。SAS - "変数"と "どこに行かないか(変数)"

の値を持つ観測値だけを選択するデータステップを考えてみましょう。 WHERE statementを使用してこれを行うには、変数を単独で表現するか、MISSING関数を使用する2つの方法があるようです。これらは、同じ結果を生成する(VARIABLE)

data where_not_missing; 
    set sashelp.electric; 
    where not missing(AllPower); 
run; 

が欠落しない

例えば、

ケース1 VARIABLE

data where_var; 
    set sashelp.electric; 
    where AllPower; 
run; 

ケース2。しかし、これが必ずしも正しいかどうかは分かりません。

  • 機能的には同じですか?
  • ケース1はケース2の場合はsyntactic sugarですか?
  • 結果が異なる場合がありますか?

答えて

5

SASでは、0または欠損以外の数値はすべてtrueです。詳細は、https://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000780367.htmを参照してください。

つまり、ケース1とケース2が100%同等ではありません。 AllPower = 0の場合、結果は異なります。

+0

ちょうど明らかであるように、 '0'ではなく' '0" 'は偽です。すべてのスペースの文字列[欠落すると評価される]以外の_any_文字列は "true"と評価されます。 – Joe

0

AllPowerの値がであるかどうかを確認する場合は、ケース2のみが機能します。

ケース1は、AllPowerでないレコードを選択しています。です。ゼロは値であり、にはがありません。

+0

ケース1は、 'AllPower'が非ゼロであり、欠損していないレコードを選択しています – Petr

+0

- 私はそれが非ゼロの値*であるはずだったはずです。 –

関連する問題