2017-01-06 15 views
1

提供されたIDの円グラフを描画するマクロがあります。基本的にテーブルから行を選択し、得られた1行テーブルを転置してから、円グラフを描画します。私が1つの観察(例えば%StudPieChart(931123)のためにそれを呼び出すと、それは完璧に動作します)。コードは次のとおりです。sasの各観測でマクロを実行しています

%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; 

ここでは、1つではなく、いくつかの観測サンプルをグラフにしたいと思います。だから私はランダムサンプルを生成し、データステップでマクロを実行しようとしました。しかし、それはもはや働かないし、私は理由もない。ここで

は、残りのコードです:

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


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

答えて

2

あなたはEXECUTE CALLを使用することができます。

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

+0

ありがとう!それは完璧に動作します。しかし、実際に実行関数の中で議論するものを説明することはできますか? –

+0

@Kuba_ CALL EXECUTEの引数は文字列です。あなたの場合は%nrstr(%StudPieChart(の値))です。私は元の投稿に括弧を一つ残しておきましたが、追加しました。私はテストしたはずですが、あなたはデータを提供しませんでした。私の答えのリンクを参照してください。 SASユーザーガイドは、早期に頻繁にご相談ください。 –

関連する問題