5

有没有办法测试变量是否会使 SAS 中的 INPUT 转换过程失败?或者,如果可以避免产生的“注意:无效参数”消息?

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;  
4

3 回答 3

5

只需包括“??” 在格式名称之前。您的示例已在下面修改...

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;
于 2009-02-20T14:01:32.407 回答
1

您可以先将变量视为字符变量,而不是这样做(因为您知道某些值不是真实日期),然后使用AFHood 提供的宏来帮助您找到无效值,然后修复这些值,然后在所有数据都干净后将变量转换为数字 var。

于 2009-02-18T20:05:25.260 回答
0

您可以使用以下内容进行检查:

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;
于 2009-02-23T08:59:00.767 回答