Чтобы сделать это, вам нужно вывести это значение в макропеременную.Вы не можете напрямую использовать переменную шага данных таким образом, потому что 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
(не связанная с именем вашего набора данных).Он будет создавать новый файл каждый раз, когда это значение изменяется.