SAS中文论坛

标题: 数据集拆分 [打印本页]

作者: shiyiming    时间: 2009-9-2 16:37
标题: 数据集拆分
呵呵!又有问题请教大家了。我想根据时间(date)对数据集进行拆分,自己根据自己的瞎理解写了下面的程序:
data sasuser.logone sasuser.logtwo sasuser.logthree;
set sasuser.log1;
if date<080725 then
   output sasuser.logone;
else if  date>080731 then
   output sasuser.logthree;
else output sasuser.logtwo;
run;
结果是有了logone.logtwo,logthree的数据集。可是等于是把log1复制到logone里了,其余两个数据集是空的。
请教各位应该怎么改
作者: shiyiming    时间: 2009-9-2 17:26
标题: Re: 数据集拆分
变量date是SAS的日期值吗?
如果是,在if表达式中要写成日期常量'25jul08'd
作者: shiyiming    时间: 2009-9-2 21:28
标题: Re: 数据集拆分
应该如2楼说的,是你的date的问题。因为如果你的date是080725这种格式的话,不可能是数值型的。数值型不会以0开头。
你可以date1 = date*1;
然后根据date1来判断。
那就是date1>80725 ...
作者: shiyiming    时间: 2009-9-2 23:05
标题: Re: 数据集拆分
[quote:1lsqh3dt]等于是把log1复制到logone里了,其余两个数据集是空的。[/quote:1lsqh3dt]

原因是080725 这个数值对应的date = Dec 15,2108。这是个久远的未来。我看不到这一天,估计你也玄。想必你的数据不是胡编乱造的,还是发生在现实里, 所以只好一股脑都去logone了。不过非常有意思,log1 不就是logone吗?

解决方法就是hopewell建议的。

[code:1lsqh3dt]if date <'25jul08'd;
or
if date <input('080725', yymmdd6.);[/code:1lsqh3dt]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2