2009-06-24 38 views
7

SASにOracle NVL機能と同等の機能はありますか?例えばSASで欠損値をゼロとして処理するwhere節

、私が言うSASでwhere句がある場合:myVarに=を持っている任意の行を含めるするつもりはない

を。私はのような何かを行うことができるようにしたいと思い

where myVar > -2 or missing(myVar) 

を::

私はゼロとして欠損値を扱いたい場合は、私が言っている

where NVL(myVar, 0) > -2 // or some SAS equivalent 

はこのようなものはありますSASでは?

+1

注意を有するデータセットを出力リレーします。含まれません。理由は、欠損値がNULLであり、NULLとの比較が常にFALSEと評価されるためです。 ネイティブSASデータでは、欠損値は0より小さい負でない数値として扱われます。 したがって、 "どこmyVar> -2;"ネイティブのSASデータを操作するときに欠損値が実際に機能します。 –

答えて

13

coalesce functionは仕事をする必要があります。

where coalesce(myVar,0) > -2 

私は機能がSAS 9で利用できるようになったのかはわからないので、あなたは本当に古いSASのバージョンを持っている場合、これは動作しない場合があります。

7

coalesce関数を使用するのが正しい方法です。

しかし、あなたが合体が実装されていないSASの古いバージョンを持っている場合、あなたはこのトリックを使用することができます:あなたは、任意の非欠番を追加するためのSASでsum functionを使用する場合は

where sum(myVar,0) > -2 

を合計すると結果は強制的に失われません。

したがって、sum関数で0を加算すると欠損値は0に変換され、欠損値は変更されません。

+1

+1:すごい提案です!私たちはもはや私の製品のSAS 8をサポートしていないので、合体が利用可能かどうかは気にしませんでしたが、そうした場合、これは独創的な回避策になります。 – Adnan

-1

のように、配列varlistname var1 var2 var3 varn;配列<の場合は です。出力します。

それが唯一のものmyVarに=と行非SASデータにだと非欠損値

関連する問題