ejemplos - SAS Loop sobre una lista de variables dentro de una macro(lea una cada vez)
ejemplos de macros en sas (2)
La mejor manera de hacerlo es diseñar su paso proc sql
para crear todas esas llamadas de macro.
proc sql ;
select cats(''%addTendency('',name,'')''
into :tendencyList separated by '' ''
from dictionary.columns
where libname eq ''LABIMP'' and memname eq ''MUESTRA1''
and (NAME LIKE ''MO_%'' OR NAME LIKE ''nu_%'' or name like ''KA_%'');
quit;
Eso crea una lista de llamadas a% addTendency () a las que luego llamas al hacer referencia a & trendList (que mencioné, pero puedes nombrar lo contrario):
data labimp.muestra1;
set labimp.muestra1;
counter + 1;
by nnumero_de_cliente;
if first.nnumero_de_cliente then counter = 1;
&tendencyList.
run;
Tendría que hacer un ciclo sobre una lista de variables dentro de una macro.
La lista se crea de la siguiente manera (he comenzado el nombre de las variables que quiero con MO, nu o KA):
proc sql noprint;
select name into :varsi separated by '' ''
from dictionary.columns
where libname eq ''LABIMP'' and memname eq ''MUESTRA1''
and (NAME LIKE ''MO_%'' OR NAME LIKE ''nu_%'' or name like ''KA_%'');
quit;
Entonces, necesito ejecutar una macro para cada uno ... esta macro se encuentra dentro del siguiente paso de datos:
data labimp.muestra1;
set labimp.muestra1;
counter + 1;
by nnumero_de_cliente;
if first.nnumero_de_cliente then counter = 1;
%addTendency(&varsi);
run;
Por supuesto, esta forma no funciona porque trae todas las variables al mismo tiempo . Es importante que si necesito un bucle debo permanecer dentro del otro paso de datos .....
Sé que debería ser fácil ya que no pude resolverlo.
¡¡¡¡Gracias!!!!
Podría hacer algo como lo siguiente:
%do i=1 %to %sysfunc(countw(&varsi));
%addTendency(%scan(&varsi, &i));
%end;