Вы можете сделать это несколькими способами.
Прежде всего, вы, вероятно, сначала захотите сделать это в наборе данных, чтобы вы могли фильтровать этот набор данных. Я бы использовал PROC TABULATE, но вы можете использовать PROC FREQ, если вам это нравится.
*make up some data;
data mydata;
call streaminit(132);
array x[100];
do _i = 1 to 50;
do _t = 1 to dim(x);
x[_t]= floor(rand('Uniform')*9-5);
end;
output;
end;
keep x:;
run;
ods _all_ close; *close the 'visible' output types;
ods output onewayfreqs=outdata; *output the onewayfreqs (one way frequency tables) to a dataset;
proc freq data=mydata;
tables _all_/missing;
run;
ods output close; *close the dataset;
ods preferences; *open back up your default outputs;
Затем отфильтруйте его, и как только вы сделали это, напечатайте его, как хотите. Обратите внимание, что в выводе PROC FREQ вы получаете столбец для каждой переменной - не очень полезно. Переменные F_
- это форматированные значения, которые затем могут быть объединены с использованием coalesce
. Я предполагаю, что это все числовые переменные - определите f_val
как символ и используйте coalescec
, если есть какие-либо символьные переменные или переменные с применяемыми к ним форматами символов.
data has_values;
set outdata;
f_val = coalesce(of f_:);
keep table f_val frequency percent;
if f_val in (0,-1,-2);
run;
Последняя строка содержит только 0, -1, -2.