SAS中文论坛

标题: 请问对日期格式的转化,以及一个时间序列转化 [打印本页]

作者: shiyiming    时间: 2007-8-17 04:40
标题: 请问对日期格式的转化,以及一个时间序列转化
我现在的数据表中有2个column, 一个是起始日期,一个是结束日期,距离
id  start_date end_date
1011 09feb2007 15feb2007         《----这里正好是一周的整数倍
1011 12mar2007 17mar2007
...
...

1011 代表一个id, 这个id 对应很多observations, 每个obs代表一次事件,后面的start_date , end_date 就是该对应事件所开始到结束的时间
我现在面临的问题是要把上面数据表转化为:
id time event
1011 1 1
1011 2 0
1011 3 1
...
就是说,变成一个时间序列,time 列所对应的值是时间,我希望把原来的date 格式的时间转换作sas的数字形式的值(!!!),后面的event为逻辑值,代表
在对应时间段(该n 周)里面有没有事件发生。

我已经有一个思路,但是
所以首先需要把09feb2007 这种日期转化为数字!!!,希望各位帮忙!
此外,如果各位能在提出什么意见,我感激不尽!!!
作者: shiyiming    时间: 2007-8-17 10:48
标题: to kofsphere
转化成数字型的日期后就可以用SAS丰富的日期函数组合来得到你所要的结果。
[code:6daa2]data temp;
input id start_date:date9. end_date:date9.;
format start_date end_date yymmdd10.;
datalines;
1011 09feb2007 15feb2007
1011 12mar2007 17mar2007
;
run;[/code:6daa2]
作者: shiyiming    时间: 2007-8-18 04:57
标题: Re: 请问对日期格式的转化,以及一个时间序列转化
谢谢楼上的
但是情况稍有不同

我的数据是在一个数据表里面 其中一个var(就是date)是日期
所以我以下的codes:

date x1 ;
   set x1 ;
   format date mmddyy8. ;
   keep date ;
run ;

并没有效果,
请教!谢谢 我希望把01jan2007 变成sas value 比如13454 (虽然不是这个数字)
作者: shiyiming    时间: 2007-8-18 08:37
标题: to kofsphere
其实我已经在上面写出来了,你只需要自己稍微变一下就行了。
看来你也需要找一本SAS培训教程“SAS Programming I: Essentials”来看看,加强一下基础能力,呵呵呵。
我又给你写了一段现成可以跑的,你再试试看
[code:a7675]data x1;
set x1(rename=(date=s_date));
length date 8;
date=input(s_date, date9.);
format date mmddyy8. ;
keep date;
run;[/code:a7675]




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