loops - ciclos - Tamaño de paso en el bucle de macro en sas
ciclos en sas (2)
Entonces quiero ejecutar un bucle anidado para mi función macro. Aquí está mi código, parece que a SAS no le gusta by -1
. ¿Hay algún código para que el segundo ciclo disminuya el paso por -1? En este caso, mi yearMix = 1982
y yearMax = 1994
.
%Macro theLoop;
%Do I = &yearMin+1 %to &YearMax-1;
%Do J = &YearMax-1 %to &I by -1;
%Meaw;
%END;
%END;
%MEND theLoop;
%theLoop;
Tengo este error:
ERROR: Se encontró un operando de caracteres en la función% EVAL o en la condición% IF donde se requiere un operando numérico. La condición era: & I por -1
ERROR: El valor% TO del ciclo% DO J no es válido.
ERROR: la macro THELOOP dejará de ejecutarse.
Especifique su incremento en un ciclo de macro %do
usando %by
rather than by
. Más detalles se pueden encontrar en la guía del usuario aquí .
En su código, SAS está intentando evaluar &I by -1
como valor numérico.
%let yearMin = 1982;
%let yearMax = 1994;
%Macro theLoop;
%Do I = %eval(&yearMin+1) %to %eval(&YearMax-1);
%Do J = %eval(&YearMax-1) %to &I %by -1;
%put &i = &j = ;
%END;
%END;
%MEND theLoop;
%theLoop;