Tratta i valori mancanti come zero nella clausola SAS in cui
-
22-07-2019 - |
Domanda
Esiste un equivalente della funzione Oracle NVL in SAS?
Ad esempio, se ho una clausola where in SAS che dice:
where myVar > -2;
non includerà alcuna riga con myVar =.
Se voglio trattare i valori mancanti come zero, devo dire:
where myVar > -2 or missing( myVar )
Mi piacerebbe poter fare qualcosa del tipo:
where NVL( myVar, 0 ) > -2 // or some SAS equivalent
C'è qualcosa di simile in SAS?
Soluzione
La funzione di coalescenza dovrebbe fare il lavoro.
where coalesce(myVar,0) > -2
Non sono sicuro che la funzione sia diventata disponibile in SAS 9, quindi se hai una versione SAS molto vecchia, potrebbe non funzionare.
Altri suggerimenti
L'uso della funzione di coalescenza è il modo giusto per farlo.
Ma se hai una vecchia versione di SAS in cui la coalesce non è implementata, puoi usare questo trucco:
where sum(myVar,0) > -2
Se si utilizza la funzione di somma in SAS per l'aggiunta, qualsiasi numero non mancante nella somma costringerà il risultato a non mancare.
L'aggiunta di 0 con la funzione di somma trasformerà un valore mancante in 0 e i valori non mancanti rimarranno inalterati.
Una cosa che puoi fare è piace array varlistname var1 var2 var3 varn; se array < > ;. quindi output;
Eseguirà l'output di set di dati con valori non mancanti