如果日期字段(字符)有“?” 在其中,那么当 INPUT 命中它时,您将自动获得一个缺失值(以及日志中的一条消息)。
Data new1;
set new;
format first MMDDYY10. Last MMDDYY10.;
first = min(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
last = max(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
run;
这 ??告诉它忽略错误的转换。但是,您还有另一个问题:丢失的内容怎么办?
如果您希望 ONE missing 自动使第一个或最后一个丢失,您需要执行以下操作(取决于具体细节):
Data new1;
set new;
format first MMDDYY10. Last MMDDYY10.;
if (rev_start ne "?" and serve_date ne "?") then do;
first = min(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
last = max(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
end;
run;
如果一个缺失是可以的,那么你需要考虑第一个/最后一个应该是缺失的,哪个应该是有效值 - 并以这种方式设置。