Как использовать все имена переменных в списке переменных внутри proc freq

#sas #frequency

#sas #частота

Вопрос:

Я пытаюсь использовать все имена переменных в списке переменных (varlistc) внутри proc freq. Однако PROC FREQ предоставлял вывод только для последнего имени переменной в varlistc. Как я могу это исправить?

 proc sql noprint;
select name 
into :varlistc separated by ' '
from data2c;
quit;

proc freq data=amp;data1;
table amp;varlistc*site;
run;
 

Ответ №1:

Просто для справки, PROC FREQ также обеспечивает более четкий синтаксис:

каждая переменная из списка в первых скобках перекрестно применяется к переменной (или списку переменных в других скобках) после звездочки.

 proc sql noprint;
select name
into :varlistc separated by ' '
from sashelp.class;
quit;


proc freq data=amp;data1;
table ( amp;varlistc ) * site;
run;
 

Может быть также, например:

 proc freq data=amp;data1;
table ( amp;varlistc ) * (site1 site2);
run;
 

Комментарии:

1. Интересно, никогда не осознавал этого!

2. Привет, переменная макроса отображает только одну переменную, а не все. Я использую следующий код.

3. proc sql noprint; выберите имя в:varlist из словаря.столбцы, где memname = ‘RD_1174’; выход; proc freq data=prof.rd_1174 ORDER=freq; таблица и varlist; выполнить;

Ответ №2:

Добавьте больше в свою макропеременную, чтобы заставить ее работать должным образом.

 proc sql noprint;
select cats(name,'*site')
into :varlistc separated by ' '
from data2c;
quit;

proc freq data=amp;data1;
table amp;varlistc;
run;
 

Это приведет к созданию всех таблиц на экране. Если вы хотите вывести их в набор данных, если вы добавите a /out , который не будет выводиться, кроме последней таблицы; у вас есть два варианта.

  • Используется ods output для получения всех выходных данных в один или несколько наборов данных
  • Включить /out=<whatever> в свой select into .