Ya que no mencionaste que tipo de archivo es, vamos a asumir que es un csv, la lógica sería la misma para cualquier archivo aunque el código puede cambiar a la hora de leer los archivos en SAS.
Paso 1: Localizar donde están nuestros archivos. Para ello utilizamos la sentencia filename, en el caso de Pablo son 25 archivos externos que si bien son fastidiosos de transcribir en nuestro código también es verdad que no es una tarea imposible. Pero imaginen por un segundo que fueran 500 archivos externos….
filename mfiles pipe ‘dir “C:\Mis Proyectos\*.csv” /b/a’;
Nota: para los que no lo sepan las opciones /b/a son del sistema DOS. No olviden colocar la ruta de sus archivos en lugar de C:\Mis Proyectos\
Paso 2: Colocar toda la información contenida en mfiles en un SAS data set.
Data infolder;
infile mfiles truncover;
input string $20.;
path=cats(“C:\Mis Proyectos\”,string);
filename=strip(scan(string,1,’.'));
run;
Si abren el data set Infolder notaran que tenemos 3 campos:
- String: Contiene la información del archivo leído directamente de la sentencia filename.
- Path:Contiene concatenado la ruta + el nombre del archivo. ej. C:\Mis Proyectos\miarchivo.csv Esta variable será utilizada mas adelante con input para crear nuestros data sets.
- Filename: contiene exactamente la misma información que la variable string pero hemos eliminado el .csv, la idea fundamental aquí es usar esta variable para asignar el nombre a cada data set para que concuerde con el nombre del archivo externo en de realizar cualquier proceso de DQ.
Paso 3: Crear una macro para importar automáticamente todos nuestros archivos externos
%macro ReadIn(input=,output=);
PROC IMPORT OUT= WORK.&output
DATAFILE= “&input”
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
%mend;
Como el ejemplo es usando csv, podemos utilizar el proc import sin mayor dificultad. En el caso de ser un arhivo txt o dat podemos utilizar la macro de la siguiente manera:
%macro ReadIn(input=,output=);
Data &output
infile “&input” missover;
Input /*Aqui tus variables*/
run;
%mend;
La macro variable &output contiene la info de la variable filename y &input contiene la info referente a la variable path.
Paso 4: Invocamos la macro para generar nuestros archivos.
Data _null_;
set infolder;
call execute(‘%ReadIn(input=’!!path!!’,output=’!!filename!!’)');
run;
Una vez alcanzado este punto, el método que se eliga para unir todos los data sets y crear un solo data set es a juicio del facultativo.