Quand je lance macro « quantplot » Je cours sur la question montre l'image:variables macro ne résoudra pas SAS
Picture of Error. Essentiellement, ce qui semble se produire est qu'aucune des expressions de cette forme recode_ & variables, out_ & variables, etc. semble renvoyer la valeur correcte. C'est simplement en le lisant comme recode_ et en ignorant la variable macro.
J'ai fourni le code suivant pour les données de l'échantillon:
data test (drop=i);
do i=1 to 1000;
a=round(uniform(1)*4,.01);
b=round(uniform(1)*10,.01);
c=round(uniform(1)*7.5,.01);
u = rand("Uniform");
y=floor((2)*u);
output;
end;
stop;
run;
%macro percentiles(indep_var=,num_groups=);
%let recodes=recode_%sysfunc(tranwrd(&indep_var,%str(),%str(recode_)));
proc rank data=test out=test groups=7;
var &indep_var;
ranks &recodes;
run;
%mend;
%percentiles(indep_var=a b c);
Et aussi le code de la macro qui ne fonctionne pas actuellement. S'il vous plaît aider!
/*Plots to determine functional form for quantitative variables*/
%macro quantplot(indep_var=,dep_var=);
/* Count the number of words in the input */
%let count=%sysfunc(countw(&indep_var));
/* Loop through the total number of values */
%do i = 1 %to &count;
%let variables=%qscan(&indep_var,&i,%str());
%put(&variables);
proc means data=test;
%put(&variables);
class recode_&variables;
var &dep_var;
output out = out_&variables mean = pby_&variables;
run;
data p_&variables;
set out_&variables; if _type_=1;
lnp = log(pby_&variables/(1-pby_&variables));
run;
ods graphics on;
proc gplot data = p_&variables;
symbol value = star i=join;
plot lnp*recode_&variables;
plot pby_&variables*recode_&variables;
run;
ods graphics off;
%end;
%mend;
%quantplot(indep_var=a b c,dep_var=y);
Pas lié à votre question mais je suggère d'utiliser sgplot pas gplot. Vous obtenez de meilleurs graphismes, plus de contrôle, et c'est plus facile à utiliser selon moi. – Reeza
https://gist.github.com/statgeek/7cffd06ebc3bc9c78b4f6a5b4538b053 – Reeza
Ma version d'une macro pour automatiser le rang proc. – Reeza