Soy un principiante en SAS y estoy tratando de usar una macro para importar archivos de Excel usando un bucle condicional. El proceso de importación se basa en initial_year; año final; valores initial_month y final_month. ...

0
Patekos 14 mar. 2021 a las 19:58

1 respuesta

La mejor respuesta

Simplemente trate sus fechas como fechas y el bucle será mucho más fácil.

%macro import(from,to);
%local start end offset yymm year ;
%let start=%sysfunc(inputn(&from.01,yymmdd8.));
%let end=%sysfunc(inputn(&to.01,yymmdd8.));
%do offset=0 %to %sysfunc(intck(month,&start,&end));
  %let yymm=%sysfunc(intnx(month,&start,&offset),yymmn6.);
  %let year=%substr(&yymm,1,4);

proc import datafile="&path.&year.\Farmacias_EA_&yymm..xlsx" 
  out=Farmacias_EA_&yymm. REPLACE dbms=xlsx
;
run;

data Farmacias_EA_&yymm.;
  set Farmacias_EA_&yymm.;
  Data_anomes=&yymm.;
run;

%end;
%mend import ;


%let path=\\xxxx.yy.pt\aaa$\INFO\; 
%import(201902,201201);

¿Realmente desea que la variable DATA_ANOMES tenga números como 201,902? ¿Por qué no almacenarlo como una cadena como "201902" o como un valor de fecha real como "01FEB2019" d?

0
Tom 14 mar. 2021 a las 17:31