Tester si une variable existe
Je veux tester si une variable existe et si elle n'est pas, créez-la.
- Vous ne pouvez pas vraiment conditionnellement créer une variable dans une des DONNÉES de l'étape. Peut-être que vous voulez écrire du code qui vérifie si un ensemble de données d'une variable particulière, et si ce n'est l'utilisation de DONNÉES à l'étape de création d'une nouvelle version de la série de données qui ajoute de la colonne requise et lui donne une certaine valeur par défaut raisonnable?
- Une meilleure solution pourrait être de
abort;
si les données d'entrée ne répondent pas aux spécifications.
Vous devez vous connecter pour publier un commentaire.
La
open()
&varnum()
fonctions peuvent être utilisées. Non-zéro de la sortie devarnum()
indique que la variable existe.close()
votre jeu de données après que vous l'ouvrez avec leopen()
fonction.data try2; var4=.; set try;
serait remplacer toutes les données dans une variable existante.var4
mentionné qu'il crée dans le dataset. Ce qui se passe au moment de l'exécution n'a pas d'effet.(en supposant que var4 est numérique)
coalescec()
appel de fonction SAS sera, par défaut, à la création numérique.Attribuer
var4
à lui-même. La mission va créer la variable si elle n'existe pas et laisser le contenu en place si il n'.Suffit de se rappeler que la création de
var4
de cette façon, quand il n'existe pas va utiliser la variable par défaut des attributs, de sorte que vous pouvez avoir besoin d'utiliser un expliciteattrib
déclaration si vous avez besoin de la mise en forme spécifique/longueur etc.var4
comme une variable numérique si elle n'était pas dans le jeu de données en entrée.C'est un très tardive réponse/commentaire, mais cette méthode fonctionne pour moi et c'est assez simple (SAS 9.4). Dans l'exemple ci-dessous, j'ai utilisé manquant numériques et variables de caractères et d'attribuer une valeur à caractère manquant variable est manquante.
creates
la variablevar4
plutôt que de tester s'il existe. Ce test est de savoir si la variable (nouveau ou ancien) est vide ou pas.