Truco SAS: Dataset con los ficheros y carpetas de un directorio.

En ocasiones necesitamos listar los archivos de un directorio. En SAS se puede hacer así. Creamos una tabla en WORK archivos con los nombres de los archivos y subcarpetas de un directorio:

/*PONE ARCHIVOS DE UN DIRECTORIO EN TABLA SAS*/
%macro archivos(directorio);
data archivos;
rc=filename('dir',"&directorio.");
dirid=dopen('dir');
numarchivos=dnum(dirid);
do i=1 to numarchivos;
nombrearchivos=dread(dirid,i);
output;
end;
rc=close(dirid);
drop rc i;
run;
%mend archivos; /*EJEMPLO SI QUEREMOS QUE NOS LISTE LAS TABLAS
SAS DEL WORK*/
proc sql noprint;
select path into:ub_work
from sashelp.vlibnam
where libname = "WORK";
quit;
%archivos(&ub_work.); data archivos;
set archivos;
where index(lowcase(nombrearchivos),"sas7bdat")>1;
run;

Puede sernos de gran utilidad cuando deseemos importar un gran número de ficheros de texto o si necesitamos manejarnos con archivos y shell, empleamos las funciones de “archivo” de SAS (en breve pondré un artículo sobre las funciones SAS). El programa se puede sofisticar empleando extensiones, eliminando carpetas,… Espero vuestros comentarios y mejoras sobre el uso de esta macro.

Compartiendo conocimientos.