вызвать функцию в макросе SAS - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть следующая программа SAS с ошибками.

proc sql
create table sigmav_n as 
select std(V) as sigmav_new from bb
quit
...
sysfunc(abs(-sigmac_new))<0.01

Здесь V - имя столбца в таблице bb.И программа выдает ошибку следующим образом:

Аргумент I для функции ABS, на которую ссылается макрофункция% SYSFUNC или% QSYSFUNC, не является числом.

Любое тело знает кореньпричина этого?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Во-первых, почему вы должны отрицать значение перед передачей его в abs ()?

Тем не менее, попробуйте это:

proc sql ;
  select case when (abs(std(v)) <0.01) then 1 else 0 end into :sigmav_new from bb ;
quit ;
1 голос
/ 14 ноября 2011

Попробуйте это:

proc sql
select std(V) into :sigmav_new from bb
quit
...
%sysfunc(abs(-&sigmav_new.))<0.01

Это заняло бы стандартное отклонение от v, поместило его в макро-переменную (числовую), которая затем могла бы использоваться abs () в команде sysfunc.

Возможно, вам понадобится оператор let или что-то еще, или вы собираетесь выполнить abs (), и результат просто «уплывает» в память.

Трудно сказать, что именно вы хотите сделать со значением, не видя немного больше вашего кода.

Хорошая статья SUGI на% sysfunc % SYSFUNC: расширение языка макросов SAS

...