我试图看一个变量是否属于日期的边界.我讨厌MMDDYY10中的DATE1.
我使用以下代码
DATA GIANT;
SET GIANT;
UPPER_BOUND= intnx('week', DATE1, 2);
run;
Run Code Online (Sandbox Code Playgroud)
它让我回来了Num 8
.
我想恢复它,MMDDYY10.
以便我可以将它与我的其他日期进行比较.
两个问题:
我试着像这样转换它:
DATA GIANT;
SET GIANT;
UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
FORMAT UP_DOS MMDDYY10.;
run;
Run Code Online (Sandbox Code Playgroud)
但现在一切都是空的.
SAS日期始终为数字(自1960年1月1日以来的天数).日期格式只是使数字可读的一种方式.INTNX返回一个数字,因为这是一个日期是; 您可以将日期格式应用于新变量.
在你的情况下,它很简单.你几乎在你的尝试中做到了,但你不需要输入/投入业务.
data giant;
set giant;
upper_bound=intnx('week',Date1,2);
format upper_bound MMDDYY10.;
run;
Run Code Online (Sandbox Code Playgroud)
INPUT
将人类可读文本转换为值(通常是数字).PUT将值转换为人类可读文本. PUT(INPUT(...))
通常用于将格式化的值转换为不同类型的格式化值(例如,将字符串"1/1/1960"转换为"01JAN1960"); INPUT(PUT(...))
除非您正在解析PUT
创建的字符串(例如,只读取特定日期元素或类似的东西),否则不常用.在大多数情况下,两者都会更改类型(从PUT中的数字到字符或INPUT中的其他方式),并且肯定会更改实际存储的值.
将格式应用于数字列会使列成为数字(通常很好)但告诉SAS如何显示该数字以便您可以理解它(通常也很好).所以在价值下方,19857
但显示的是05/14/2014
.
归档时间: |
|
查看次数: |
1934 次 |
最近记录: |