Je veux tester si une variable existe et si ce n'est pas le cas, créez-la.Test si une variable existe
Répondre
Les fonctions open()
& varnum()
peuvent être utilisées. La sortie non nulle de varnum()
indique que la variable existe.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
if _n_ = 1 then do;
dsid=open('try');
if varnum(dsid,'var4') = 0 then var4 = .;
rc=close(dsid);
end;
drop rc dsid;
run;
N'oubliez pas de 'close()' votre fichier après l'avoir ouvert avec la fonction 'open()'. – cmjohns
L'ouverture et le varnum ne sont pas nécessaires ici sont-ils? Ne pouvez-vous pas simplement dire "data try2; var4 =; set try;". Dans l'exemple donné, il fera l'ouverture et varnum à chaque itération, plutôt inefficace, donc ils devraient au moins être gardés par "si _N_ = 1 alors". –
J'ai besoin de tester que var4 existe pour que si son contenu est préservé. La proposition 'data try2; var4 = .; set try; 'écraserait toutes les données dans une variable préexistante. – Murray
data try2;
set try;
var4 = coalesce(var4,.);
run;
(en supposant var4 est numérique)
Assigner var4
à lui-même. L'affectation va créer la variable si elle n'existe pas et laisser le contenu en place si c'est le cas.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
var4 = var4;
run;
Rappelez-vous simplement que la création var4
de cette façon quand il n'existe pas utilisera les attributs variables par défaut, vous devrez peut-être utiliser une instruction explicite attrib
si vous avez besoin de mise en forme/longueur spécifique, etc.
C'est une réponse/un commentaire très en retard, mais cette méthode fonctionne pour moi et est assez simple (SAS 9.4). Dans l'exemple ci-dessous, j'ai utilisé des variables numériques et caractères manquantes et une valeur affectée à la variable de caractère manquante est manquante.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
length var4 $20;
length var5 8;
set try;
var4 = var4;
if var4 = ' ' then var4 = 'Not on Source File';
run;
Ceci est la même réponse que la réponse précédente de AndyBean – Snorex
Pas si Muray veut être informet de la non-existence de la variable sur le Deataset intput! –
- 1. Test si une variable est sérialisable
- 2. test si la propriété EXISTE
- 3. Test si l'élément existe jquery
- 4. test si le fichier existe
- 5. BASH test existe répertoire avec une variable comme chemin
- 6. Test si un cookie existe avec son nom dans une variable
- 7. PHP - test IMAP si un alias existe
- 8. test pour voir si un XElement existe
- 9. Test si le fichier existe avec Postgres
- 10. C# et Active Directory: test si une unité d'organisation existe
- 11. Voir si une variable/fonction existe dans un paquet?
- 12. test si une variable est en lecture seule
- 13. Bash: Test si une variable est un nombre entier
- 14. Test si l'utilisateur a passé une variable shell
- 15. brindille: variable d'affichage uniquement si elle existe
- 16. variable vérifier si ombles existe ou non
- 17. Comment vérifier si une variable existe en flex
- 18. Comment vérifier si une variable existe dans un modèle FreeMarker?
- 19. mysql se comporte différemment selon si une variable d'utilisateur existe
- 20. Flex 3: Comment puis-je voir si une variable existe
- 21. XSLT définit une variable et vérifie si elle existe après
- 22. Comment puis-je vérifier si une variable existe?
- 23. Comment puis-je vérifier si une variable existe dans Scheme?
- 24. Définir une variable égale au résultat si le résultat existe
- 25. Comment vérifier si une variable existe dans jquery
- 26. Test pour une variable vide
- 27. Test si une police est installée
- 28. Test si le nom de couleur CSS existe
- 29. XSl: Variable - Condition pour vérifier si la valeur existe
- 30. test angularjs si le fichier existe pour ng-include
Vous ne pouvez pas vraiment créer une variable de manière conditionnelle dans une étape DATA. Peut-être voulez-vous écrire du code qui vérifie si un ensemble de données a une variable particulière, et sinon utilisez une étape DATA pour créer une nouvelle version de l'ensemble de données qui ajoute la colonne requise et lui donne une valeur par défaut raisonnable? –
Une meilleure solution pourrait être 'abort;' si les données d'entrée ne satisfont pas les spécifications. – StasK