Bonjour je voudrais savoir s'il est possible de simplifier ce programme avec une 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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 proc SQL; CREATE TABLE espace.PERIODE AS SELECT CODEPORTEFEUILLE,NOMPORTEFEUILLE, DT_DEB_VALIDITE,DT_FIN_VALIDITE,LASTNAME,SIT_ACT ,CASE When DT_FIN_VALIDITE is not null then year(datepart(DT_FIN_VALIDITE))-year(datepart(DT_DEB_VALIDITE)) else year(date())-year(datepart(DT_DEB_VALIDITE)) End as duree ,COUNT(LASTNAME) AS periode ,SUM((LASTNAME LIKE 'Sec%') ) AS nbvac ,calculated periode - calculated nbvac AS nbcouv FROM espace.PERIODE GROUP BY CODEPORTEFEUILLE; quit; proc means data=espace.PERIODE mean sum; var duree; class CODEPORTEFEUILLE SIT_ACT; ods output summary=espace.periode_indicateur; run; proc sort data=espace.periode_indicateur; by CODEPORTEFEUILLE; run; data espace.periode_indicateur; set espace.periode_indicateur; col1=SIT_ACT||'_Mean'; col2=SIT_ACT||'_Sum'; run; proc transpose data=espace.periode_indicateur out=espace.periode_indicateurs1 (DROP=_name_ _label_); ID col1; by CODEPORTEFEUILLE; VAR duree_Mean; run; proc transpose data=espace.periode_indicateur out=espace.periode_indicateurs2 (DROP=_name_ _label_); ID col2; by CODEPORTEFEUILLE; VAR duree_Sum; run; data espace.periode; merge espace.periode:; run; data espace.periode; merge espace.periode (drop=NObs col:); run;
merci d'avance
Partager