我试图查看变量是否属于日期边界。 我讨厌MMDDYY10中的DATE1。
我使用以下代码
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;
但现在一切都是空的。
答案 0 :(得分:5)
SAS日期始终为数字(自1960年1月1日起的天数)。日期格式只是使数字可读的一种方式。 INTNX返回一个数字,因为所有日期都是;您可以将日期格式应用于新变量。
在你的情况下,它非常简单。你几乎在你的尝试中做到了,但你不需要输入/投入业务。
data giant;
set giant;
upper_bound=intnx('week',Date1,2);
format upper_bound MMDDYY10.;
run;
INPUT
将人类可读文本转换为值(通常是数字)。 PUT将值转换为人类可读文本。 PUT(INPUT(...))
通常用于将格式化的值转换为不同类型的格式化值(例如,将字符串" 1/1/206"转换为" 01JAN1960") ;除非您正在解析INPUT(PUT(...))
创建的字符串(例如,只读取特定日期元素或类似内容),否则PUT
不常用。在大多数情况下,两者都会改变类型(从PUT中的数字到字符或INPUT中的其他方式),并且肯定会改变实际的存储值。
将数据应用于数字列会使列成为数字(通常很好),但会告诉SAS如何显示该数字以便您可以理解它(通常也很好)。因此,值下面是19857
,但显示的是05/14/2014
。