我正在使用BY GROUP选项绘制一些数据。虽然我能够使用#byval选项自动将BY GROUP值放在每个绘图的标题中,但我想单独保存每个绘图并想在#byval之后命名它而不是调用它 - SGPLOT01,SGPLOT02 ......
e.g。让我们说:
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 /".
感谢您的帮助。
答案 0 :(得分:3)
一种选择是使用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);
答案 1 :(得分:-1)
您希望在#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;
/**********************************/