Trucos SAS. Unión de múltiples tablas SAS con un nombre parecido

Ha llegado una búsqueda y ponemos el truco. Creo que ya lo puse pero no está mal de recordarlo.

1. Creamos 20 datasets aleatorios con 10 observaciones cada uno:

%macro doit;

%do i=1 %to 20;

data zzdatos_&i.;

do i=1 to 10;

output;

end;

run;

%end;

%mend;

Un bucle fácil de macros ha generado 20 dataset que se llaman ZZDATOS_n. Recomiendo siempre emplear nombres «absurdos» para el trabajo con esta metodología.

2. Empleamos un PROC SQL sobre la librería DICTIONARY, en concreto sobre la tabla tables.

proc sql noprint;

select memname into:lista_tablas separated by " "

from dictionary.tables

where index(memname,"ZZDATO")>0;

quit;

Recordemos que en SASHELP tenemos vistas de estas tablas, el SEPARATED BY es el que indica que hacemos una selección múltiple.

3. Realizamos la unión:

data tablon;

set &lista_tablas.;

run;

proc delete data=&lista_tablas.;run;

Sólo tenemos que emplear la macrovariable _& lista_tablas. _y podemos realizar cualquier operación con esta lista. Sé que soy un poco pesado con esta metodología pero me parece importante usarla porque puede ayudarnos a ahorrar código y automatizar procesos. Por supuesto si alguien tiene dudas sugerencias o un trabajo sin «over time» (ahora se llama así a echar más horas que un tonto) ya sabe rvaquerizo@analisisydecision.es