Я хочу написать код, в котором при определенных условиях будет выполняться другое proc tabulate. Проблема заключается где-то внутри макроса. Без изменений все работало нормально. Идея кода довольно проста, но я впервые сделал что-то подобное. В зависимости от значения x в данных makro будет выполнен другой макрос. Я не знаю, как переменные должны быть определены внутри макроса.Macro with proc tabulate
data makro;
set number;
if number < 20 then x=1;
else x=2;
run;
proc format;
value temp 70- HIGH='red';
run;
PROC SQL;
CREATE TABLE Stat_for_&cel AS
SELECT distinct t1.&zmienna,
t1.&cel,
t2.number,
(COUNT(t1.cid)) AS ILE
FROM zrodlo.abt_app t1 left join ile_zmiennych t2 on t1.&zmienna=t2.&zmienna where t1.&zmienna not is missing
GROUP BY t1.&zmienna,
t1.&cel
ORDER BY t1.&zmienna DESC;
QUIT;
%macro tabelka1(Statystyka_dla_cel,&ILE,&cel,&zmienna);
proc format;
value temp 70- HIGH='red';
run;
PROC TABULATE
DATA= &&Stat_for_&cel format=commax10.2 ;
VAR &&ILE;
CLASS &&zmienna/ MISSING;
CLASS &&cel/ MISSING;
TABLE
/* Row Dimension */
&&cel,
/* Column Dimension */
&&ILE* ColPctSum* &&zmienna*[style=[background=temp.]];
RUN;
%mend tabelka1;
data makro_2;
set makro;
if x=1 then call execute ('%tabelka1');
run;
EDIT: Добавлена информация из «ответа», поскольку это не ответ.
код должен работать так. & Cel и & zmienna - это просто переменные, которые я хочу использовать в процедуре proc proculate и которые определяются вручную в начале кода. Я хочу запустить макрос только один раз, когда «номер» равен < 20. В следующих нескольких шагах я просто подготавливаю данные с форматом proc, а также создаю таблицу «Stat_for_ & cel», которая позже будет использоваться в качестве данных в процедуре табуляции proc.
Основная проблема заключается в том, что% macro tabelka1, я считаю. Я не знаю, как следует использовать переменные & cel и & zmienna внутри макроса.
К сожалению, ваш вопрос недостаточно ясен, чтобы понять, о чем именно вы просите о помощи. – Reeza
Примеры входных и выходных данных помогут. Вы хотите запустить макрос несколько раз, если в MAKRO есть несколько наблюдений, которые удовлетворяют условию X = 1? Или вы хотите запустить его только один раз, если ANY наблюдение имеет X = 1? Или, может быть, только если ВСЕ наблюдения имеют X = 1? – Tom
Вот пример того, как я напишу макрос. В нижней части кода есть образец кода для выполнения макроса. Обратите внимание на список параметров в комментариях и использовании. – Reeza