将日期与不良条目进行比较并替换为缺失值

时间:2013-09-05 19:43:12

标签: sas

一般问题,我有代码来比较日期并且它正常工作,但是,有些列有问号而不是日期。当我的代码通过列运行时,问号不应该影响决策,对吗?如果这是创建一个错误的决定,有没有办法用我的数据集中的所有列中的缺失值替换??

Data new1;
set new;
format first date MMDDYY10. Last date MMDDYY10.    
first = min(input(serve_date, MMDDYY10.), input(rev_start, MMDDYY10.);
last = max(input(serve_date, MMDDYY10.), input(rev_start, MMDDYY10.);
drop date;
run;

1 个答案:

答案 0 :(得分:1)

如果日期字段(字符)有"?"在它中,当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;

??告诉它忽略糟糕的转换。但是,您还有另一个问题:缺少该怎么办?

如果你想让一个失踪者自动做出第一个或最后一个失踪,你需要做这样的事情(取决于确切的细节):

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;

如果有一个遗失是可以的,那么你需要考虑哪个是第一个/最后一个应该是缺失的,哪个应该是有效值 - 并设置它。