Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Les bonnes idées SAS
2 participants
Page 1 sur 1
Les bonnes idées SAS
Je créé ce topic afin que les âmes charitables puissent mettre leur macro SAS!
Un lien directe vers le site du support SAS où l'on peut retrouver le détail des syntaxes avec exemple de toutes les procédures du module SAS/STAT: http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#aceclus_toc.htm (regarder à gauche l'inventaire).
Le support SAS
Un lien directe vers le site du support SAS où l'on peut retrouver le détail des syntaxes avec exemple de toutes les procédures du module SAS/STAT: http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#aceclus_toc.htm (regarder à gauche l'inventaire).
Dernière édition par joyeux_lapin13 le Jeu 10 Mai 2012 - 8:39, édité 2 fois
Re: Les bonnes idées SAS
Parcourir colonnes (méthode itérative)
Un petit code que je trouve, personnellement, bien pratique sous SAS: il permet de créer une liste contenant le nom des variables de type qualitative (comprendre: format chaîne de caractères) et une liste contenant le nom des variables de type quantitative (comprendre: format numérique) à partir de l'ensemble des variables disposées en colonne. Soit, l'une des méthodes sous SAS pour parcourir vos colonnes une à une!
PROC CONTENTS DATA = table NOPRINT OUT = contents;
RUN;
DATA contents_num;
SET contents(WHERE = (INDEX(FORMAT,"$") <= 0));
RUN;
DATA contents_char;
SET contents(WHERE = (INDEX(FORMAT,"$") > 0));
RUN;
PROC SQL NOPRINT;
SELECT DISTINCT(NAME) INTO :list_variables_cont SEPARATED BY ' ' FROM contents_num;
SELECT COUNT(NAME) INTO :nb_variables_cont FROM contents_num;
QUIT;
PROC SQL NOPRINT;
SELECT DISTINCT(NAME) INTO :list_variables_char SEPARATED BY ' ' FROM contents_char ;
SELECT COUNT(NAME) INTO :nb_variables_char FROM contents_char ;
QUIT;
%DO iteration_cont = 1 %TO &nb_variables_cont.;
%PUT je pointe sur %SCAN(&list_variables_cont., &iteration_cont.)
%END;
%DO iteration_char = 1 %TO &nb_variables_char .;
%PUT je pointe sur %SCAN(&list_variables_char ., &iteration_char .)
%END;
NB: ce code doit figurer dans une macro.
Re: Les bonnes idées SAS
Plusieurs façons pour connaître le nombre de ligne d'une table :
- Code:
%LET DSID = %SYSFUNC(OPEN(Paysan.Base_paysan_breton_socio));
%LET NOBS = %SYSFUNC(ATTRN(&DSID,NOBS));
%LET NVARS = %SYSFUNC(ATTRN(&DSID,NVARS));
%LET RC = %SYSFUNC(CLOSE(&DSID));
%put &nobs;
%put &nvars;
- Code:
proc sql noprint;
select count(*)into : nb_ligne2 from Paysan.Base_paysan_breton_socio ;
quit;
%put &nb_ligne2;
- Code:
data _null_;
set Paysan.Base_paysan_breton_socio;
call symput("nb_ligne3", _N_);
run;
%put &nb_ligne3;
- Code:
data test3;
set test2 nobs=nombre;
call symput("nb_ligne4",nombre);
run;
%put &nb_ligne4;
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Les bonnes idées SAS
Voici une fonction qui peut être utile : l'inverse de la fonction lagX() de SAS :
- Code:
/*on crée la fonction inverselag que l'on stock dans la work.fct*/
PROC FCMP OUTLIB=work.fct.inverselag ;
FUNCTION lead (dataset $, var $, lead) ;
/*ouvre la table*/
dsid = OPEN(dataset) ;
/*nombre de ligne dans la table*/
nb = ATTRN(dsid, "NOBS") ;
/*fin de la table*/
IF lead > nb THEN res = . ;
ELSE DO ;
/*lit la "lead"ième ligne*/
rc = FETCHOBS(dsid, lead) ;
/*renvoie l'observation de la colonne "VARNUM"ième colonne et écrit*/
res = GETVARN(dsid, VARNUM(dsid, var)) ;
END ;
/*ferme la table*/
rc = CLOSE(dsid) ;
/*retourne le résultat*/
RETURN (res) ;
ENDSUB ;
RUN ;
QUIT ;
- Code:
/*spécifie ou sont situées les fonctions créées*/
options cmplib=work.fct;
- Code:
/*exemple sur une table sashelp*/
DATA work.B2 ;
SET sashelp.air ;
/*inverse de lag()*/
next = LEAD("sashelp.air", "air", _N_+1) ;
/*inverse de lag2()*/
next2 = LEAD("sashelp.air", "air", _N_+2) ;
RUN ;
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Les bonnes idées SAS
Petit bout de code pour supprimer tous les labels d'une table :
Niaboc
- Code:
proc datasets lib=ma_lib nolist;
modify ma_table;
attrib _all_ label='';
quit;
run;
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Sujets similaires
» Les bonnes idées R
» "bonnes variables" d'un modèle : AIC ou pvalues?
» besoin d'aide, de conseils et d'idées :-) Merci
» "bonnes variables" d'un modèle : AIC ou pvalues?
» besoin d'aide, de conseils et d'idées :-) Merci
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|