首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS和INTNX格式

问SAS和INTNX格式
EN

Stack Overflow用户
提问于 2014-12-12 21:45:44
回答 1查看 4K关注 0票数 2

我想看看一个变量是否落入了日期的边界。我讨厌DATE1已经在MMDDYY10了。

我使用以下代码

代码语言:javascript
复制
DATA GIANT; 
  SET GIANT; 
  UPPER_BOUND= intnx('week', DATE1, 2);  
run;

它给了我一些关于Num 8的东西。

我希望将它恢复到MMDDYY10.,以便将其与其他日期进行比较。

两个问题:

  1. 如何将长度为8的数字转换为日期?
  2. 为什么intnx ..。设计用于处理日期,返回一个数字而不是相同格式的东西?

我试着把它变成这样:

代码语言:javascript
复制
DATA GIANT; 
  SET GIANT; 
  UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
  FORMAT UP_DOS MMDDYY10.; 
run;

但现在这一切都变成了空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-12 22:22:36

SAS日期总是数字的(自1960年1/1/1960以来的天数)。日期格式只是使数字可读性的一种方式。INTNX返回一个数字,因为这只是一个日期;应该由您对新变量应用日期格式。

在你的例子中,这很简单。在你的尝试中,你几乎得到了正确的结果,但你不需要投入/投入业务。

代码语言:javascript
复制
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。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27452607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档