Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Treat missing values as zero in SAS where clause

Tags:

sas

Is there an equivalent of the Oracle NVL function in SAS?

For example, if I have a where clause in SAS that says:

where myVar > -2;

it is not going to include any rows that have myVar = .

If I want to treat missing values as zero, i have to say:

where myVar > -2 or missing( myVar )

I'd like to be able to do something like:

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

Is there something like this in SAS?

like image 464
Adnan Avatar asked Jun 24 '09 19:06

Adnan


2 Answers

The coalesce function should do the job.

where coalesce(myVar,0) > -2

I'm not sure if the function became available in SAS 9, so if you have a really old SAS version this might not work.

like image 193
Ville Koskinen Avatar answered Nov 11 '22 00:11

Ville Koskinen


Using the coalesce function is the right way to do this.

But if you have an old version of SAS where coalesce isn't implemented, you can use this trick:

where sum(myVar,0) > -2

If you use the sum function in SAS for adding, any non-missing number in the summation will force the result to be non-missing.

Thus adding 0 with the sum function will transform a missing value to 0, and non-missing values will remain unaltered.

like image 34
Martin Bøgelund Avatar answered Nov 10 '22 22:11

Martin Bøgelund