Bonjour,
Je souhaiterais exécuter une macro en faisant appel à des paramètres stockés dans une table.
Je dispose de la table tab_parametre contenant 5 variables : age, profil, sexe, ville, salaire avec 2000 lignes.
En parallèle, je dispose des tables : BORDEAUX_seniors, PARIS_seniors, PARIS_jeunes, PARIS_familles etc....
J'ai écrit la macro suivante (c'est un exemple pour illustré) :
Pour faire appel à ma macro, j'ai écrit le code suivant (2000 lignes d'appels à la macro) :
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 data compilation ; run ; %macro salaire_moyen(age, profil, sexe, salaire, ville ) ; data base_calcul ; set &profil._&ville. ; if salaire > &salaire. ; run ; data compilation ; set compilation base_calcul ; run ;
etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 %salaire_moyen(22,jeunes,masculin,1500,PARIS) ; %salaire_moyen(60,seniors,masculin,2000,PARIS) ;
Les paramètres faisant référence aux données contenues dans la table tab_parametre.
Pour éviter de surcharger mon programme avec ces 2000 lignes d'appel à la macro, je souhaiterais faire appel à une boucle... J'ai commencé à écrire ceci :
Mais je ne sais pas comment faire pour que SAS exécute ma macro %salaire_moyen à partir des modalités de ma table tab_parametre.
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
19
20 /*Nombre lignes table*/ proc sql noprint; select distinct count(*) into: nb_lignes from tab_parametre; quit; %put &nb_lignes. ; %macro appel_macro ; data tab2; set tab1; %DO i = 1 %TO &nb_lignes. ; ??? %END ; run ; %mend ; %appel_macro ;
Merci d'avance pour votre aide !
Partager