1

我正在使用 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/”。

谢谢你的帮助。

4

2 回答 2

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);
于 2012-02-29T00:07:40.593 回答
-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;
/**********************************/
于 2014-02-07T17:32:06.197 回答