Bonjour!
Savez vous comment on teste si une variable existe sous SAS?
Merci beaucoup
Bonjour!
Savez vous comment on teste si une variable existe sous SAS?
Merci beaucoup
tu regardes via le résultat dans la proc CONTENTS. Il y a d'autres méthodes mais c'est le plus simple.
Coucou
Merci pour ta réponse.
En fait ça me semble plus difficile de faire ainsi...
Je souhaiterais tester si elle existe car dans certains cas, elle existe (donc je souhaiterais la supprimer) dans d'autres non (je souhaiterais la créer).
Donc passer par un proc contents me parait un peu compliqué, il faudrait tester si elle existe, puis faire une macrovariable qui teste si c'est bon ou pas et selon la valeur de la macrovariable, créer ou supprimer la variable...
S'il y a une autre solution, je suis prenante, sinon, je ferai avec la proc content...
Merci
J'ai trouvé cette macro sur le net :
Dommage qu'il faille programmer tout ça pour tester seulement l'existence d'un variable!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 %macro VarExist(ds,var); %local rc dsid result; %let dsid=%sysfunc(open(&ds)); %if %sysfunc(varnum(&dsid,&var)) > 0 %then %do; %let result=1; %put NOTE: Var &var exists in &ds; %end; %else %do; %let result=0; %put NOTE: Var &var not exists in &ds; %end; %let rc=%sysfunc(close(&dsid)); &result %mend VarExist; /* Usage */ %put %VarExist(sashelp.class,name); %put %VarExist(sashelp.class,aaa);
Effectivement dans tous les cas tu vas devoir programmer une dizaine de lignes.
regardes la
la réponse est pourtant ici
Oh merci
désolée, je ne connaissais pas! Je suis débutante
Hello,
une solution avec moins de lignes , on peut aussi utiliser &sqlobs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /*même principe : si la variable existe ,&exist vaut 1 sinon 0*/ %macro exist(le_libname, la_table,la_colonne); proc sql noprint; select count(name)into :exist from dictionary.columns where upcase (libname)="le_libname" and upcase (memname)="&la_table" and upcase(name)="&la_colonne"; quit; %put résultat : &exist.; %mend; %exist( sashelp, class,sex); %exist( sashelp, class,sexe);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager