F**********t 发帖数: 47 | 1 有人对这种日期格式熟悉吗?
假如有一个变量date, 格式就是 YYMMDDn8.
date
20010331
20010430
20010531
20010630
20010731
20010831
20101130
20101231
如果日期是2005年1月1日之前执行一种操作,日期是2005年1月1日之后,执行另外一种
操作。比较日期大小这段代码怎样写啊。
我试过:
if date < '20050101'd then ...;
if date > '20050101'd then ...;
可是结果不对啊。高手指点一下吧。
谢谢 |
S****Y 发帖数: 4634 | 2 我一般用
IF date <= MDY(1, 1, 2005) THEN ...;
【在 F**********t 的大作中提到】 : 有人对这种日期格式熟悉吗? : 假如有一个变量date, 格式就是 YYMMDDn8. : date : 20010331 : 20010430 : 20010531 : 20010630 : 20010731 : 20010831 : 20101130
|
h*e 发帖数: 10233 | 3 我一般用
IF date <= ‘01-JAN-2005'd THEN ...;
这样比较直观。呵呵 |
F**********t 发帖数: 47 | 4 data a;set a;
date1 = MDY(1, 1, 2005);
format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行)
date1 = MDY(1, 1, 2008);
format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行)
IF DATE < date1 THEN DELETE;
IF DATE >= date2 THEN DELETE;
run;
a 表格有2001到2010年之间每个月最后一天的数据。以上代码是要删除2005年以前和
2008年以后的所有数据。可是,得到结果是表格里面没有任何数据了。
log file 里面有说 variable DATE is uninitialized.
但是,我确定变量名是 date, 而且表格a 在当前工作目录下。本来想把表格用附件贴
上来,可是论坛不让。
【在 S****Y 的大作中提到】 : 我一般用 : IF date <= MDY(1, 1, 2005) THEN ...;
|
h*e 发帖数: 10233 | 5 where is set statement?
【在 F**********t 的大作中提到】 : data a;set a; : date1 = MDY(1, 1, 2005); : format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行) : date1 = MDY(1, 1, 2008); : format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行) : IF DATE < date1 THEN DELETE; : IF DATE >= date2 THEN DELETE; : run; : a 表格有2001到2010年之间每个月最后一天的数据。以上代码是要删除2005年以前和 : 2008年以后的所有数据。可是,得到结果是表格里面没有任何数据了。
|
A*******s 发帖数: 3942 | 6 格式和值的大小无关吧,应该是别的问题。
【在 F**********t 的大作中提到】 : 有人对这种日期格式熟悉吗? : 假如有一个变量date, 格式就是 YYMMDDn8. : date : 20010331 : 20010430 : 20010531 : 20010630 : 20010731 : 20010831 : 20101130
|
w*****8 发帖数: 395 | 7 date is counted as numeric data in SAS.
please use 'dd-mon-yyyy'd format, such as '29-may-2011'd while used in
equation or condition expression. SAS will automatically and correctly
convert this format as date for you.
【在 F**********t 的大作中提到】 : 有人对这种日期格式熟悉吗? : 假如有一个变量date, 格式就是 YYMMDDn8. : date : 20010331 : 20010430 : 20010531 : 20010630 : 20010731 : 20010831 : 20101130
|
F**********t 发帖数: 47 | 8 综合大家的帮助,
把代码改为如下,还是不行。
请大家继续帮我看看,
会是什么问题。
谢谢!
data a; (即使这里用新的 dataset 还是不行! 比如: data a2)
set a;
IF DATE < '1-JAN-2005'd THEN DELETE;
IF DATE >= '1-JAN-2008'd THEN DELETE;
run;
【在 w*****8 的大作中提到】 : date is counted as numeric data in SAS. : please use 'dd-mon-yyyy'd format, such as '29-may-2011'd while used in : equation or condition expression. SAS will automatically and correctly : convert this format as date for you.
|
F**********t 发帖数: 47 | 9 搞定了,用MDY函数, 和 'dd-mon-yyyy'd format都可以。
出错的原因是,我的代码里面, 有些中文输入模式下写的。
谢谢大家的帮助!
接着问个问题:
如果设 2005年1月31日为 t=0 (单位:月; 表格里的日期几乎是每个月最后一天);
怎样有序地读取 -119 |
S****Y 发帖数: 4634 | 10 use macro and intnx function
);
【在 F**********t 的大作中提到】 : 搞定了,用MDY函数, 和 'dd-mon-yyyy'd format都可以。 : 出错的原因是,我的代码里面, 有些中文输入模式下写的。 : 谢谢大家的帮助! : 接着问个问题: : 如果设 2005年1月31日为 t=0 (单位:月; 表格里的日期几乎是每个月最后一天); : 怎样有序地读取 -119
|