input - texto - Evitar un mensaje de error SAS: "NOTA: argumento inválido para funcionar ENTRADA"
scan sas ejemplo (3)
¿Hay alguna manera de probar si una variable fallará en el proceso de conversión de INPUT en SAS? O, alternativamente, si se puede evitar el mensaje resultante "NOTA: argumento no válido".
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;
Solo incluye "??" antes del nombre del formato. Tu ejemplo ha sido modificado a continuación ...
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;
Puede verificar utilizando algo como lo siguiente:
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;
En lugar de hacerlo de esta manera, podría tratar su variable como una variable de carácter al principio (ya que sabe que algunos de los valores no son fechas reales de todos modos), luego use la macro provista por AFHood para ayudarlo a encontrar los valores inválidos, luego corrija esos valores, luego convierta la variable a una var numérica una vez que todos los datos estén limpios.