SAS: Использование оператора Weight в ошибке команды Proc Freq - PullRequest
0 голосов
/ 17 декабря 2018

В SAS (через WPS Workbench) я пытаюсь получить подсчеты частоты для моих данных, используя поле popn (совокупности в виде целых чисел) в качестве веса.

proc freq data= working.PC_pops noprint; 
    by District;
    weight popn / zeros; 
    tables AreaType / out= _AreaType;
run;

Однако, когда я запускаюВ приведенном выше коде я получаю следующую ошибку, указывающую на мой оператор Weight:

ERROR: Found "/" when expecting ;
ERROR: Statement "/" is not valid

Я проверил синтаксис в Интернете и включил нулевые значения в мои весовые коэффициенты, он определенно говорит об использовании параметра "/ нули"в пределах веса, но SAS (WPS) дает ошибку?Что я делаю не так?

ОБНОВЛЕНИЕ: теперь я обнаружил, что опция нулей не поддерживается через WPS Workbench.Есть ли обходной путь к этому?

1 Ответ

0 голосов
/ 18 декабря 2018

Учитывая, что вы не используете какие-либо дополнительные элементы PROC FREQ (статистические тесты), вам может быть лучше использовать PROC TABULATE.Это позволит вам точно определить, какие уровни вы хотите использовать в выходных данных, даже если они содержат ноль элементов, используя несколько различных методов.Вот немного хакерского решения, но оно работает (по крайней мере, в SAS 9.4):

data class;
  set sashelp.class;
  weight=1;
  if age=15 then weight=0;
run;

proc freq data=class;
  weight weight/zeros;
  tables age;
run;


proc tabulate data=class;
  class age;
  var weight;
  weight weight; *note this is WEIGHT, but does not act like weight in PROC FREQ, so we have to hack it a bit by using it as an analysis variable which is annoying;
  tables age,sumwgt='Count'*weight=' '*f=2.0;
run;

Оба дают одинаковый результат.Вы также можете использовать набор CLASSDATA, который немного менее хакерский, но я не уверен, насколько хорошо он поддерживается в не-SAS:

proc sort data=class out=class_classdata(keep=age) nodupkey;
  by age;
run;

proc tabulate data=class classdata=class_classdata;
  class age;
  freq weight;  *note this is FREQ not WEIGHT;
  tables age,n*f=2.0/misstext='0';
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...