SAS: PROC SGPLOT BY GROUP автоматические имена файлов

Я рисую некоторые данные, используя опцию BY GROUP. Хотя я могу использовать параметр #byval для автоматического размещения значения BY GROUP в заголовке каждого графика, но я хочу сохранить каждый график отдельно и назвать его после #byval вместо того, чтобы называть его - SGPLOT01, SGPLOT02...

например Допустим, у меня есть:

data xyz;
input type$ x y1 y2@@;
cards;
A 1 5 7
A 2 7 9
A 3 8 10
B 1 5 7
B 2 7 9
B 3 8 10
;;
RUN;

PROC SGPLOT DATA=xyz;
by type;
series1 x=x y=y1/markers;
series2 x=x y=y2/markers;
title "#byval";
RUN;

В этом примере будут созданы два графика, по одному для типа A и B. Но программа автоматически назовет их как SGPLOT1.pdf и SGPLOT2.pdf. Я бы предпочел назвать их A.pdf и B.pdf и сохранить их в каталоге «C:/SGPLOTS/».

Спасибо за вашу помощь.


person user877204    schedule 28.02.2012    source источник


Ответы (2)


Один из вариантов — использовать ODS и использовать макрос для печати каждого TYPE отдельно, как в следующем примере.

data xyz;
input type$ x y1 y2 @@;
cards;
A 1 5 7
A 2 7 9
A 3 8 10
B 1 5 7
B 2 7 9
B 3 8 10
;
RUN;

ods listing close;

%macro plot_it(type=);

   goptions reset
      device = sasprtc
      target = sasprtc
      ;

   ods pdf file="C:/SGPLOTS/&type..pdf" notoc;

   PROC SGPLOT DATA=xyz;
   by type;
   where type = "&type";
   series x=x y=y1/markers;
   series x=x y=y2/markers;
   title "#byval";
   RUN;

   ods pdf close;

%mend plot_it;

%plot_it(type=A);
%plot_it(type=B);
person RWill    schedule 29.02.2012
comment
... и вы могли бы использовать call execute для замены жестко закодированных вызовов макросов, если бы было большое количество типов. - person Robert Penridge; 01.03.2012

Вы хотите добавить имя переменной в круглых скобках после #BYVAL. В этом примере вы хотите поместить #byval(type) в свой заголовок.

Я поместил ваш пример в то, что SAS называет «бутербродом HTML», состоящим из двух строк сверху и двух строк снизу. Кроме того, я добавил параметр helpbrowser, который указывает SAS использовать собственные возможности для отображения вывода в формате html.

option helpbrowser=sas;

/**** top of html sandwich *****/
ods html ;
ods graphics on; 
/*******************************/


data xyz;
input type$ x y1 y2@@;
cards;
A 1 5 7
A 2 7 9
A 3 8 10
B 1 5 7
B 2 7 9
B 3 8 10
;;
RUN;

PROC SGPLOT DATA=xyz;
by type;
series x=x y=y1/markers;
series x=x y=y2/markers;
title "Here is the type:  #byval(type)";
RUN;


/**** bottom of html sandwich *****/
ods graphics off;
ods html close;
/**********************************/
person Chuck Anderson    schedule 07.02.2014