SAS中文论坛

标题: 在sas中如何修改日期值 [打印本页]

作者: shiyiming    时间: 2003-11-16 22:30
标题: 在sas中如何修改日期值
由于小弟对sas处理时间变量的技巧非常不熟悉,故有此一问,程序如下:
data t1;
        input id date1 date2;
        informat date1 ddmmyy10. date2 ddmmyy10.;
cards;
1        12/05/1992        13/11/1945
2        11/03/2022        23/12/1932
run;

data t2;
set t1;
if id=2 then date1='12/10/1998'd;
run;
proc print;
        format date1 ddmmyy10. date2 ddmmyy10.;
run;
运行后,log窗口提示如下:
163  if id=2 then date1='12/10/1998'd;
                        -------------
                        77
ERROR: Invalid date/time/datetime constant '12/10/1998'd.
ERROR 77-185: Invalid number conversion on '12/10/1998'd.
我到sas网站查找解决方法无果,(我对sas网站使用同样非常不熟悉)故恳请高人指点。谢谢!
作者: shiyiming    时间: 2003-11-17 10:01
标题: 原来如此
sas在处理日期变量时,通过cards(datalines)读入具体日期值时,可以用格式输入,但在利用赋值语句给一个日期变量赋值时,就要使用日期常量的方式,而sas中日期常量采用‘日期+月份前三个英文字母+年份’后跟d的形式表示。所以如以上我的程序的写法是不可能得到预期结果的。只需将赋值语句改为date1=‘12oct1998’d即可。
为自己学艺不精汗颜!
作者: shiyiming    时间: 2003-11-17 11:10
高!实在是高!

你也可以这样啊:

if id=2 then date1=mdy(10,12,1998);
作者: shiyiming    时间: 2003-11-17 12:31
data t1;
input id d1:$10. d2:$10.;
date1=input(d1,ddmmyy10.);
date2=input(d2,ddmmyy10.);
format date1 ddmmyy10.;
format date2 ddmmyy10.;
cards;
1 12/05/1992 13/11/1945
2 11/03/2022 23/12/1932
run;
作者: shiyiming    时间: 2003-11-17 13:13
还是willon高啊,呵呵!
作者: shiyiming    时间: 2003-11-22 13:26
标题: 3x a lot
受益匪浅! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->




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