Traiter les valeurs manquantes comme nulles dans la clause SAS où

StackOverflow https://stackoverflow.com/questions/1040543

  •  22-07-2019
  •  | 
  •  

Question

Existe-t-il un équivalent de la fonction Oracle NVL dans SAS?

Par exemple, si j'ai une clause where dans SAS qui indique:

where myVar > -2;

il ne comprendra aucune ligne comportant myVar =.

Si je veux traiter les valeurs manquantes comme nulles, je dois dire:

where myVar > -2 or missing( myVar )

J'aimerais pouvoir faire quelque chose comme:

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

Y at-il quelque chose comme ça dans SAS?

Était-ce utile?

La solution

La fonction coalesce devrait faire le travail.

where coalesce(myVar,0) > -2

Je ne sais pas si la fonction est devenue disponible dans SAS 9, donc si vous avez une version SAS vraiment ancienne, cela risque de ne pas fonctionner.

Autres conseils

Utiliser la fonction coalesce est la bonne façon de procéder.

Mais si vous avez une ancienne version de SAS où la fusion n'est pas implémentée, vous pouvez utiliser cette astuce:

where sum(myVar,0) > -2

Si vous utilisez la fonction de somme dans SAS pour l’ajout, tout nombre non manquant dans la sommation forcera le résultat à ne pas manquer.

Ainsi, ajouter 0 à la fonction sum transformera une valeur manquante en 0 et les valeurs non manquantes resteront inchangées.

Une chose que vous pouvez faire est de comme tableau varlistname var1 var2 var3 varn; si tableau < > ;. puis sortie;

Il générera des ensembles de données ayant des valeurs non manquantes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top