在sas中运行每个观察的宏

时间:2017-01-06 12:43:33

标签: sas sas-macro

我有一个宏,它为所提供的ID绘制饼图。它基本上从表中选择一行,然后转置获得的一行表,然后绘制饼图。如果我将其称为一次观察(例如,%StudPieChart(931123)),它的效果非常好。这是代码:

%MACRO StudPieChart(id);
data projekt.temp;
set projekt.cwiczenia(keep=nrInd KOL1 KOL2 KOL3 aktywnosc where= (nrInd=&id));
drop nrInd;
run;

proc transpose data=projekt.temp out=projekt.temp;
run;

proc gchart data=projekt.temp;
    pie _NAME_ / sumvar=COL1 percent=inside;
run;
%MEND;

现在我想要绘制一个不是一个图表,而是一些观察样本。所以我生成了随机样本并尝试在数据步骤中运行宏。但它不再起作用,我不知道为什么。

以下是代码的其余部分:

proc surveyselect data=projekt.cwiczenia out=projekt.sample(keep=nrInd) sampsize=5 NOPRINT;
run;


data _NULL_;
set projekt.sample;
%StudPieChart(nrInd);
run;

1 个答案:

答案 0 :(得分:2)

您可以使用CALL EXECUTE。

data _NULL_;
   set projekt.sample;
   call execute('%nrstr(%StudPieChart('||nrInd||'));');
   run;

RTM:http://support.sas.com/documentation/cdl/en/lefunctionsref/69762/HTML/default/viewer.htm#p1blnvlvciwgs9n0zcilud6d6ei9.htm