Как избежать сообщения об ошибке SAS: «ПРИМЕЧАНИЕ: неверный аргумент функции INPUT» - PullRequest
4 голосов
/ 18 февраля 2009

Есть ли способ проверить, не изменит ли переменная процесс преобразования INPUT в SAS? Или, в качестве альтернативы, если полученного сообщения «ПРИМЕЧАНИЕ: неверный аргумент» можно избежать?

data _null_;  
format test2 date9.;  
input test ;  
test2=INPUT(PUT(test,8.),yymmdd8.);  
if _error_ =1 then do;  
    _error_=0;  
    test2=INPUT(PUT(test-1,8.),yymmdd8.);  
end;  
put test2=;  
cards;  
20270229  
run;  

Ответы [ 3 ]

5 голосов
/ 20 февраля 2009

Просто включите "??" перед именем формата. Ваш пример был изменен ниже ...

data null;
format test2 date9.;
input test ;
test2=INPUT(PUT(test,8.),?? yymmdd8.);
if error =1 then do;
error=0;
test2=INPUT(PUT(test-1,8.), ?? yymmdd8.);
end;
put test2=;
cards;
20270229
run;
1 голос
/ 18 февраля 2009

Вместо того, чтобы делать это таким образом, вы могли бы сначала обработать вашу переменную как символьную переменную (поскольку вы все равно знаете, что некоторые значения не являются реальными датами), затем использовать макрос, предоставленный AFHood поможет вам найти недопустимые значения, затем исправить эти значения, а затем преобразовать переменную в числовую переменную, как только все данные будут очищены.

0 голосов
/ 23 февраля 2009

Вы можете проверить, используя что-то вроде следующего:

data null;
  format test2 date9.;
  input test ;
  test2=INPUT(PUT(test,8.),yymmdd8.);
  **if test ne '' and nmiss(test2)** then test2=INPUT(PUT(test-1,8.),yymmdd8.);
  put test2=;
cards;
20270229
run;
...