2016-05-03 1 views
0

ici est ma tableautomization Macro via Invites SAS EG

data: 
ax bx cx dx ex fx 
1 2 3 4 5 5 
2 3 5 1 0 5 
3 7 8 9 1 4 

voici mon code de base

%macro example(c= , b= ,a=); 
data temp; 
set data; 
diff = &c-(&b+&a); 
run; 
%mend example; 
% example(c=cx ,b=bx ,a=ax) 

Je veux automize diff = c- (b + a) en définissant une invite -comme dans SAS EG mais je ne sais pas comment le faire? Mon but est de pouvoir changer mes caractéristiques (par exemple cx, je veux mettre f ou à la place ax, e et ainsi de suite) dans l'équation "diff" car mes données réelles sont constituées de milliers de colonnes. Si vous m'aidez, j'apprécie.

Répondre

0

Pour automatiser ceci, vous voudrez probablement faire trois invites. Un pour chaque variable (c, b, a). (Bien sûr, appelez-les quelque chose de descriptif, pas c, b, a!) Sélectionnez "utiliser tout au long du projet" et "nécessite une valeur non vide". Peut-être ajouter un texte plus utile pour décrire ce qu'ils sont.

Ensuite, vous devez avoir un moyen de les peupler. Vous pouvez les remplir à partir d'une liste statique (entrez les valeurs possibles dans), juste comme des zones de texte ouvertes dans lesquelles vous les taperez à chaque fois, ou vous pouvez les remplir à partir d'une source de données. Les mécanismes de remplissage à partir d'une source de données dépendent de votre configuration locale - utilisez-vous "EG local" ou EG est-il connecté à un serveur de métadonnées, par exemple - mais dans l'ensemble, il devrait être assez simple. Soit sur "L'utilisateur sélectionne les valeurs d'une liste statique", sélectionnez "Valeurs", puis "Parcourir" pour le fichier de données SAS; ou "L'utilisateur sélectionne les valeurs d'une liste dynamique", faites de même. Ce dernier vérifiera toujours la source de données pour les mises à jour, tandis que la première remplira la liste au moment de la création.

Enfin, dans votre programme, votre appel macro serait alors ressembler à:

%example(c=&c ,b=&b ,a=&a) 

&c &b &a sont les noms d'invite (le nom « court » si vous lui avez donné un nom de texte plus aussi).

+0

Merci beaucoup Joe! –

0

Qu'est-ce que vous voulez est quelque chose comme ceci:

/*Define Prompt*/ 
%window info 
    #5 @5 'Var1:' 
    #5 @13 var1 2 attr=underline 
    #7 @5 'Var2:' 
    #7 @13 Var2 2 attr=underline 
    #9 @5 'Var3:' 
    #9 @13 Var3 2 attr=underline; 

/*Show Prompt*/ 
%display info; 

/*Display Macro Variables in the Log*/ 
%put &var1; 
%put &var2; 
%put &var3; 

%example(c=&var1 ,b=&var2 ,a=&var3) 
+0

Cela ne fonctionne pas dans EG. EG a sa propre interface d'invite. – Joe

+0

Désolé - raté le côté Enterprise Guide des choses. –