IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Haache

Tableau Disjonctif Complet (TDC): Macro SAS

Noter ce billet
par , 14/04/2015 à 17h47 (2604 Affichages)
le code ci-dessous crée la macro Disjonctif. Cette macro a pour objectif de créer un tableau disjonctif complet à partir d'un paquet de variables qualitatives. Il s'agit juste de transformer les modalités des variables qualitatives en variables binaires: 1 si l'individu possède la caractéristique et 0 sinon. Après avoir compilé la macro, le code suivant permet de l'exécuter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
%Disjonctif(Data=Base, Var= assur age prof niv tm, out=Dich);
 /*Ce code transforme les modalités des variables assur age prof niv tm de la table Base en variables dichotomiques.
Il stocke le résultat dans Dich*/
Vous n'aurez qu'à mettre le nom de la table des données, les variables qualitatives et la table de sortie.
Cette opération est un peu fréquente dans les analyse multidimensionnelles comme ACM, économétrie des variables qualitatives etc.... D'où l'importance d'avoir une macro pour l'exécuter en un clic!!!
Voici le code de la macro. Vous pouvez laisser vos contributions et critiques en commentaire.

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
%Macro Disjonctif(Data= ,Var= ,Out=_Dicotom_out)/STORE DES="Macro permettant de créer des variables dichotomiques à partir d'un 
 paquet de variables qualitatives";
 /* CREATION D'UN TABLEAU DISJONCTIF COMPLET*/
proc transpose data=&Data out=_Dicotom_tr;
var &var;
data _null_;
set _Dicotom_tr;
call symput (compress("Var"||_n_),_NAME_);
call symput ("Nvar",_n_);
run;
%let Listev= ;
%do i=1 %to &nvar;
%let Listev=&Listev &&Var&i.*;
%end;
%let Listev=%substr(&Listev,1,%length(&Listev)-1);
proc freq data=&Data noprint;
table &Listev/out=_Dicotom_ct;
run;
Data &out;
set &Data;
run;
%do i=1 %to &nvar;
proc sort data=_Dicotom_ct;
by &&var&i;
data _Null_;
set _Dicotom_ct;
by &&var&i;
retain __Ct 0;
if first.&&var&i then __Ct=__Ct+1;
if first.&&var&i then do;
call symput (compress("Var&i._"||__Ct),&&var&i );
call symput ("Nvar&i",__Ct);
end;
run;
Data &out;
set &out;
rename &&var&i=__&&var&i;
run;
%do j=1 %to &&Nvar&i;
Data &out;
set &out;
if __&&var&i="&&Var&i._&j" then Var&i._&j=1;
else Var&i._&j=0;
label Var&i._&j="&&Var&i._&j";
run;
%end;
Data &out;
set &out;
drop __&&var&i;
run;
%end;
proc datasets lib=work nolist;
delete _Dicotom_tr _Dicotom_ct;
run;


%put FIN DE MACRO. SI VOUS AVEZ RENCONTRE DE DIFFICULTES;
%PUT ECRIVEZ-MOI SUR: ariel92and@gmail.com;
%mend;

Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Viadeo Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Twitter Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Google Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Facebook Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Digg Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Delicious Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog MySpace Envoyer le billet « Tableau Disjonctif Complet (TDC): Macro SAS » dans le blog Yahoo

Catégories
Sans catégorie

Commentaires