我想看看一个变量是否落入了日期的边界。我讨厌DATE1已经在MMDDYY10了。
我使用以下代码
DATA GIANT;
SET GIANT;
UPPER_BOUND= intnx('week', DATE1, 2);
run;它给了我一些关于Num 8的东西。
我希望将它恢复到MMDDYY10.,以便将其与其他日期进行比较。
两个问题:
我试着把它变成这样:
DATA GIANT;
SET GIANT;
UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
FORMAT UP_DOS MMDDYY10.;
run;但现在这一切都变成了空。
发布于 2014-12-12 22:22:36
SAS日期总是数字的(自1960年1/1/1960以来的天数)。日期格式只是使数字可读性的一种方式。INTNX返回一个数字,因为这只是一个日期;应该由您对新变量应用日期格式。
在你的例子中,这很简单。在你的尝试中,你几乎得到了正确的结果,但你不需要投入/投入业务。
data giant;
set giant;
upper_bound=intnx('week',Date1,2);
format upper_bound MMDDYY10.;
run;INPUT将人类可读的文本转换为值(通常是数字)。PUT将值转换为人类可读的文本。PUT(INPUT(...))通常用于将格式化的值转换为不同类型的格式化值(例如,将字符串"1/1/1960“转换为"01JAN1960");除非您正在解析PUT创建的字符串(例如,只读取特定日期元素或类似的内容),否则INPUT(PUT(...))并不是非常常用的。在大多数情况下,两者都会更改类型(在PUT中从数字更改为字符,或者在输入中更改其他方式),当然也会更改实际存储的值。
将格式应用于数字列后,列将保留为数字(通常是好的),但告诉SAS如何显示该数字,以便您能够理解它(通常也很好)。因此,值下面是19857,但显示的是05/14/2014。
https://stackoverflow.com/questions/27452607
复制相似问题