Как я могу использовать формат данных DDMMYYDw. в процессе импорта МАКРОСА SAS

#sas #sas-macro

#sas #sas-макрос

Вопрос:

итак, у меня есть такой код

 %let fdate=%sysfunc(today());
%put %sysfunc(putn(amp;fdate,MMDDYYD10.));
%let ydate=%eval(amp;fdate-1);
%put %sysfunc(putn(amp;ydate,MMDDYYD10.));
  

И, похоже, это работает

 127  %let fdate=%sysfunc(today());
128  %put %sysfunc(putn(amp;fdate,MMDDYYD10.));
SYMBOLGEN:  Macro variable FDATE resolves to 22152
08-25-2020
129  %let ydate=%eval(amp;fdate-1);
SYMBOLGEN:  Macro variable FDATE resolves to 22152
130  %put %sysfunc(putn(amp;ydate,MMDDYYD10.));
SYMBOLGEN:  Macro variable YDATE resolves to 22151
08-24-2020
  

но я использую вот так.

 proc import datafile = "S:csse_covid_19_daily_reportsamp;ydate..csv"
 out = T0824
 dbms = CSV
 REPLACE;

 GUESSINGROWS=100000;
 
run;
  

Сообщение об ошибке отображается следующим образом.

 csse_covid_19_daily_reports22151.csv.
ERROR: Import unsuccessful.  See SAS Log for details.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
  

Они преобразованы обратно в 22151.

У меня есть файл, подобный этому

введите описание изображения здесь

итак, чтобы извлечь этот файл в процессе импорта, я хочу формат, подобный 8-24-2020. таким образом, я могу получать данные из CSV в sas.

Как я могу исправить код?

Спасибо

Комментарии:

1. Это также может быть полезно для вас. При необходимости вы можете обрабатывать все сразу динамически. Это лучше, потому что, как только ваш ввод указан, это быстрее и гарантирует, что все будут считаны с одинаковыми типами / форматами, чтобы позже вы не столкнулись с проблемами несоответствия данных. communities.sas.com/t5/SAS-Communities-Library /…

Ответ №1:

Вам нужно использовать ту же переменную. В вашем тестировании вы используете%SYSFUNC(), но в вашем коде это не так, так что на самом деле вы сравниваете не одно и то же.

Измените свой код на:

  "S:csse_covid_19_daily_reports%sysfunc(putn(amp;ydate.,MMDDYYD10.)).csv"
  

Или измените переменную вашего макроса, чтобы она была отформатирована. Если вы используете его в нескольких местах, используйте %SYSFUNC () для управления отображением в разных ситуациях, как это гарантировано.