2017-01-06 2 views
1

У меня есть макрос, который рисует круговую диаграмму для предоставленного ID. Он в основном выбирает строку из таблицы, затем переносит полученную таблицу из одной строки и затем рисует круговую диаграмму. Он отлично работает, если я назову его для одного наблюдения (например,% 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; 

Теперь я хочу нарисовать диаграмму для не одного, а некоторого образца наблюдений. Поэтому я создал случайную выборку и попытался запустить макрос на шаге данных. Но это больше не работает, и я не знаю, почему.

Вот остальная часть кода:

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


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

ответ

2

Вы можете использовать ВЫЗОВ ВЫПОЛНИТЬ.

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 (<значение nrind>)); Я оставил одну скобку в своем оригинальном посте, но я добавил ее. Я должен был протестировать, но вы не предоставили данные. См. Ссылку в моем ответе. Руководство пользователя SAS следует проконсультироваться раньше и часто. –

Смежные вопросы