【发布时间】:2016-12-01 10:32:27
【问题描述】:
我尝试使用在循环中创建的散点图模板,以便捕获每个绘图组合,但我发现我不能对数组使用 call symputX。我怎样才能找到这种情况的转机?
您可以在上面找到仅一种组合的散点图示例。
谢谢
data work.mycsv;
set work.mycsv;
array temp[3] x y z;
call symputX('temp',temp);
run;
%macro scatter();
%let i = 1;
%do %while (&i <= 3);
%let j = %sysevalf(&i+1);
%do %while(&j <= 3);
%if &i ne &j %then %do;
proc template;
define statgraph scatterplot;
begingraph;
entrytitle "Title";
layout overlay;
scatterplot x=&&temp[&i.] y=&&temp[&j.] /
group=Survived name="scatter" datalabel=Response;
discretelegend "scatter";
endlayout;
endgraph;
end;
%end;
%let j =%sysevalf(&j + 1);
%end;
%let i = %sysevalf(&i + 1);
%end;
%mend scatter;
%scatter();
proc sgrender data=work.mycsv template=scatterplot;
run;
【问题讨论】:
-
没有宏数组的概念。一个类比是一个列表,您依次访问每个项目,请参阅此处的示例support.sas.com/documentation/cdl/en/mcrolref/69726/HTML/…
-
您希望宏变量 TEMP 包含什么?源表 MYCSV 中有多少观察值?发布一个简单的 MYCSV 示例以及您想要生成的 SCATTERPLOT 语句?
-
你好 Tom,我只为 1 个组合添加了散点图示例,我想为所有组合生成相同的(在本例中为 3 个组合)。我有 3 个数值参数和 900 个观察值。问候
-
@Reza,非常感谢。我通过使用您提供的链接解决了它
-
我不明白你在说什么组合?您是在谈论三个变量 X、Y 和 Z 的 2 路组合吗? x=X y=Y, x=X y=Z, x=Y y=Z?