Truco SAS: Dataset con los ficheros y carpetas de un directorio.
Marzo 3rd, 2008 | por rvaquerizo |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;<code> </code></code><code></code><code></code><code>/*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.);</code><code> </code><code>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.