Bonjour à tous!!!!!!!!!!!!!!
Je suis débutante en SAS et là je galère vraiment, Je sollicite votre aide 'sil vous plait.
Contexte: J'ai une macro qui s'appelle SORT (Domaine= , Ind=, .......... ) qui me permet de trier 3 tables et de les Merger pour obtenir une seule table.
Maintenant le problème est que dans ma macro SORT, les paramètres DOMAINE( 8 domaines au total: A B C D E F G H) et Ind (130 indicateurs au total: K11 K11bis K12 K12bis K12ter.....) varient.
Les indicateurs dépendent du domaine où l'on est. Chaque domaines a ses propres indicateurs. Mais la structure des tables est la même pour tous les indicateurs.
Je veux faire une autre macro AppelSort qui me permet d'obtenir ma table ind triée en fonction du domaine que l'on a .
Exemple: pour Domaine A trié ind K11 K11bis K12
Faire pareil pour B.......
Voici le code que j'ai fais mais ça marche pas.
Je vous remercie d'avance pour votre réponse
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34 /* Macro pour trier les indicateur en fonction du domaine choisit*/ %macro sort (domaine=,ind=,listeVAR=,listeRENAME1=,listeRENAME2=,listeRENAME3=); proc sort data=&domaine.&annee_2..&ind._&suf_rapport. out=&ind._&annee_2._&suf_rapport.(rename= &listeRENAME1. %if &rapport.=CE %then CE&annee_2.PF&annee.=CE;) ;by &rapport. &listeVAR. ;run; proc sort data=&domaine.&annee_1..&ind._&suf_rapport. out=&ind._&annee_1._&suf_rapport.(rename= &listeRENAME2. %if &rapport.=CE %then CE&annee_1.PF&annee.=CE;) ;by &rapport. &listeVAR. ;run; proc sort data=&domaine.&annee..&ind._&suf_rapport. out=&ind._&annee._&suf_rapport. (rename= &listeRENAME3. %if &rapport.=CE %then CE&annee.PF&annee.=CE;) ;by &rapport. &listeVAR. ;run; data &ind._total; merge &ind._&annee_2._&suf_rapport. (in=a) &ind._&annee_1._&suf_rapport. (in=b) &ind._&annee._&suf_rapport. (in=c); by &rapport. &listeVAR. ; run; %mend; /*Macro pour l'affichage des indicateurs*/ %macro; %let carc=I; %let Ldomaine = EFF ACC ABS PRO HAN ORG REM; /*%let Lindicateur = 111 112....;*/ %do d = 1 %to %sysfonc(countw(&Ldomaine)); %let Edomaine = %scan(&Edomaine., &i.); %do i= 1 %to %sysfonc(countw(&Lindicateur)); %let Eindicateur = %scan(&Lindicateur., &i.); %sort(domaine = &Edomaine. Indic=&carc.&Eindicateur. listeVAR=CCNT,listeRENAME1=%str(NBR=VAR1 prcent=VAR1),listeRENAME2=%str(NBR=VAR2 prcent=VAR2),listeRENAME3=%str(NBR=VAR3 prcent=VAR3))); %end; /*Choisir indicateur en fonction du domaine*/ %end; data &indic._total; set &ind._total; CLASS1=put(CCNT,$NIV_CCNT.); %mend;
Partager