Наименование экспортируемых файлов с переменной в SAS - PullRequest
0 голосов
/ 27 июня 2019

Я хочу экспортировать данные из SAS в .csv с помощью PROC EXPORT.Я хотел бы, чтобы имя файла изменялось в зависимости от значения переменной.Это возможно?

PROC EXPORT DATA= WORK.A 
OUTFILE= "c:\folders\filenameVAR1.csv" 
DBMS=CSV LABEL REPLACE;
PUTNAMES=YES;
RUN;

Я хотел бы добавить значение переменной (например, VAR1) в конце имени моего файла, как показано выше.Я хотел бы файл с именем filenameVAR1.csv, а затем, когда я изменяю переменную, он будет называться filenameVAR2.csv.Спасибо

1 Ответ

1 голос
/ 28 июня 2019

Чтобы сделать это, вам нужно вывести это значение в макропеременную.Вы не можете напрямую использовать переменную шага данных таким образом, потому что PROC EXPORT не взаимодействует с шагом данных (даже если он использует его в некоторых случаях).

Один вопрос будет, когдаВы говорите «значение переменной», что вы имеете в виду?Если вы имеете в виду «значение одной переменной в одной строке», даже если оно действительно присутствует во всех строках, вы можете сделать это довольно легко:

proc sql;
  select max(var1) into :var1
    from work.a
  ;
quit;

Тогда у вас есть макропеременная &VAR1., которую вы можетевставьте в ваш экспорт:

PROC EXPORT DATA= WORK.A 
OUTFILE= "c:\folders\filename&VAR1..csv" 
DBMS=CSV LABEL REPLACE;
PUTNAMES=YES;
RUN;

Обратите внимание на дополнительный ., который завершает макропеременную.

Теперь, если это значение изменит , и вы хотите новыйфайл для каждого набора строк с общим значением для var1, тогда он отличается.Вы не можете сделать это непосредственно в proc export, но, поскольку вы пишете CSV, вы можете сделать это самостоятельно!

data _null_;
  set work.a;
  length file_w_Var1 $255;
  file_w_var1 = cats('c:\folders\filename',VAR1,'.csv');
  file a filevar=file_w_var1 dlm=',' dsd;
  put 
    var1 
    var2 $ 
    var3 
    var4 
    var5 $ 
    var6
   ;
run;

(очевидно, с реальными именами переменных и соответствующими $ и прочее).

Вы можете выполнить экспорт, скопировать код экспорта из журнала в программный файл и просто изменить оператор file, как я делаю выше (и добавить создание этого кода переменной), чтобы получить егоработать.Для того, чтобы это работало так, как вы хотите, он должен быть отсортирован по var1 (по крайней мере, сгруппирован по нему, если не отсортирован).

Опция filevar делает то, что она говорит SAS посмотреть на переменную ииспользуйте это для местоположения файла, вместо того, чтобы быть в операторе файла - там есть фиктивная a (не связанная с именем вашего набора данных).Он будет создавать новый файл каждый раз, когда это значение изменяется.

...