SAS 无效“闰年”; 发行日期 yymmdd8
我正在阅读一些原始数据,其中有几个错误的日期。 具体来说,有人在非闰年键入了“2 月 29 日”。 例如:
data _null_;
input test :yymmdd8.;
format test date9.;
cards;
20270229
run;
客户希望恢复到 2 月 28 日。是否有快速/有效的方法来做到这一点? 例如,相当于:
IF iserror(date) then date=date-1; ?
如有任何建议,不胜感激!
I am reading in some raw data that has a couple of bad dates. Specifically, someone has keyed in "29th Feb" on a NON leap year. For example:
data _null_;
input test :yymmdd8.;
format test date9.;
cards;
20270229
run;
The customer would like this to revert to the 28th Feb. Is there a quick / efficient method of doing this? eg an equivalent of:
IF iserror(date) then date=date-1; ?
Any suggestions gratefully received!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会更加小心地确定日期。 这是一种方法。 嗯。
I would be a bit more careful fixing dates. here is one way. hth.
这是来自 SCONSIG 的一个很棒的提示。 链接
可以通过一种或另一种方式将其合并到您的负载中。
Here is a great tip from SCONSIG. link
It is possible to incorporate this into your load in one way or the other.
上面答案的稍微修改版本(我认为)。 尽管使用“??”,但它避免了错误消息 在输入函数中。
Slightly modified version (I think) of the answer above. It avoids the error messages though with the "??" in the input function.
这并不漂亮,并且有转换注释,但它可以工作并且不会出错。
输出:
This isn't pretty and there are conversion notes but it works and doesn't error.
Output: