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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top