有没有其他人有这个问题?基本上,有时当我编写宏并运行代码时,没有任何反应。日志只是将您尝试以黑色执行的代码写入,但是像SAS一样被禁用,您必须关闭SAS并在再次正常运行之前将其重新打开。有没有办法解决这个问题而不必关闭sas。
这是我的代码:
dm 'clear log';
dm 'clear output';
dm 'odsresults: clear';
libname projet 'C:\Users\MJ-INFO\Desktop\Projet scoring1' ;
/*Extrcation de la base d'etude et creation d'une copie*/
data Examen ;
set projet.base_resiliation_proj ;
run;
/*Contenu de la base*/
proc contents data=Examen;
run;
/*Corespondance entre les formats et les variables */
proc format ;
value $sexe
"1"="homme"
"2"="femme";
run;
/*Applicatation des formats*/
data Examen;
set projet.base_resiliation_proj ;
format sexe $sexe.;
run ;
/*Nous avons 53892 observations et 8 variables dans notre base*/
/*Definition de la variable à expliquer *
%let var_cible=RESIL;
/*Definition des variables explicatives */
%let var_quali=formule sexe;
%let var_quanti=anc_client anc_cont cotisation id nb_cont;
/*Vue sur la variable cible*/
proc freq data=Examen;
table &var_cible;
run;
/*14.42 des contrats sont des fragiles*/
/*Exploration des variables candidates de la base*/
proc freq data=Examen;
table &var_quali;
run;
proc means data=Examen min max mean median nmiss;
var &var_quanti;
run;
/*Traitement des valeurs manquantes/aberrantes*/
data Examen;
set Examen;
if cotisation=-1 then delete;
if cotisation='.' then delete;
if nb_cont=99999 then delete;
run;
/*II.Preparation des donnees*/
/*Etude des liaisons entre variables qualitatives et variable cible */
/*Variables qualitatives : test de Khi-2 & v de Cramer*/
%macro quali(table,var,cible,mod);
/*Representation en terme d'effectif*/
proc gchart data=&table;
vbar3d &var. / sumvar=&cible discrete;
title "Effectifs de la variable &var";
run;
/*Taux de contrat à risque*
proc freq data=&table;
table &var.*&cible / chisq outpct out=pct;
run;
proc gchart data=pct (where=(&cible=&mod));
vbar3d &var. / sumvar=pct_row discrete;
title "Taux de contrats à risque de la variable &var";
run;
quit;
title;
%mend;
%quali(Examen,sexe,&var_cible,1);
Sas通过运行此代码向我显示黑色执行:
/*II.Preparation des donnees*/
/*Etude des liaisons entre variables qualitatives et variable cible */
/*Variables qualitatives : test de Khi-2 & v de Cramer*/
%macro quali(table,var,cible,mod);
/*Representation en terme d'effectif*/
proc gchart data=&table;
vbar3d &var. / sumvar=&cible discrete;
title "Effectifs de la variable &var";
run;
当我看到日志页面时,即使我的代码没有错误,我也不明白为什么我会执行黑色操作?
感谢您的帮助!
答案 0 :(得分:1)
您的代码:
%macro quali(table,var,cible,mod);
/*Representation en terme d'effectif*/
proc gchart data=&table;
vbar3d &var. / sumvar=&cible discrete;
title "Effectifs de la variable &var";
run;
开始定义宏但从未完成。最后没有%mend语句,所以SAS认为你仍然发送宏代码进行编译。如果你添加%修补,它应该工作。
SAS以这种方式感觉无响应的最常见原因是未公开的宏定义,未关闭的注释块和无与伦比的引号。如果你google" SAS magic string"您将找到可以提交的代码示例,以便在遇到这种情况时尝试恢复。像:
*';*";*/;%mend;
如果您使用的是Enterprise Guide,则每次提交代码时都会自动添加一个魔术字符串。这意味着您的会话不会感到被挂起。但是如果你有一个未闭合的宏定义,它可能会让它更难识别,因为看起来好像一切都很好。但实际上它根本没有执行。神奇的字符串最终可能会隐藏问题。我假设SAS工作室也添加了一个魔术字符串,但我还没有检查过。