全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9422 4
2009-11-13
dCONTRACTT的格式是:01JAN2008:00:00:00

如果想让在CONTRACTT 在2008年以后的,CONTRACTTime=2008年,
我用了下面的语句:


if "01JAN2008:00:00:00"<=CONTRACTT then CONTRACTTime=2008;
可是发现,2007年,2006年的以后的时间,也变成2008年了。
请问这是怎么回事啊?多谢啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-11-13 15:12:40
这是非常正确的事情
因为2006,2007 都小于等于2008
<=contractt 是小于等于的意思
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-13 18:58:25
01JAN2008:00:00:00在表示日期时间的时候需要写成"01JAN2008:00:00:00"dt形式
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-14 00:43:39
1# renchaoqun

我想原因可能如此:
复制代码
当SAS判断此条件是,SAS 试图把"01JAN2008:00:00:00" 转化为数字,但是出现错误,因此1.把错误写入log; 2. 把它当作缺失值。缺失值总是最小,因此条件总是成立,把CONTRACTTime 赋值为2008。

而且正如已被指出的, 你的逻辑也有些问题啊,
可是发现,2007年,2006年的以后的时间,也变成2008年了。。。
以下code可以考虑
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-23 10:15:49
jingju11 发表于 2009-11-14 00:43
1# renchaoqun

我想原因可能如此:当SAS判断此条件是,SAS 试图把"01JAN2008:00:00:00" 转化为数字,但 ...
如果中间存在空值的话应该怎么处理呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群