SAS中文论坛

标题: 请教一个关于时间格式转换的问题 [打印本页]

作者: shiyiming    时间: 2007-8-24 17:16
标题: 请教一个关于时间格式转换的问题
首先,在提这个问题前,我已经将这个版面上的关于时间格式转换的帖子都读了一边,发现不能解决我的问题。

原始数据样式为:

Date                        CSpd          RSpd
2002/1/1/0        6.9        5.9666
2002/1/1/6        7.1        7.2176
2002/1/1/12        7.8        7.9405
2002/1/1/18        6.9        6.0174
2002/1/2/0        5.5        6.1646
2002/1/2/6        3.1        1.7687

其中,date这一列表示的年/月/日/时。例如,2002/1/1/18表示的是,2002年1月1日18时。
请问如何讲这个表的date导入到sas表中呢?

我觉得有两个难点:一是月份、日期和小时不都是用两位数字表示的(2002/1/1而不是2002/01/01);二是日期和小时放在一起(但是又不包含分秒)。

提问前已经查过sas里的help文件,并学习过SAS programming I: Essentials的内容,均难以找到好的解决办法,故求助,在线等!
作者: shiyiming    时间: 2007-8-24 22:49
标题: to linwise
如果说你已经看过前人的帖子;查过HELP;并且也学习过SAS programming I了,说明你努力过了,也动过脑筋了,我愿意与这样的朋友交流。请试试看:
[code:7fa5a]data temp;
infile datalines;
input Date:yymmdd8. CSpd RSpd;
format Date yymmdd10.;
datalines;
2002/1/1/0 6.9 5.9666
2002/1/1/6 7.1 7.2176
2002/1/1/12 7.8 7.9405
2002/1/1/18 6.9 6.0174
2002/1/2/0 5.5 6.1646
2002/1/2/6 3.1 1.7687
;
run;[/code:7fa5a]
作者: shiyiming    时间: 2007-8-24 23:14
标题: Re: 请教一个关于时间格式转换的问题
Thanks! I'll try it immediately! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
作者: shiyiming    时间: 2007-8-25 11:07
标题: Re: 请教一个关于时间格式转换的问题
非常感谢楼主的回答!上面的code确实可以讲该数据导入的sas中!但是这些数据是在一个文本文档中的,所以我将该code稍微修改下以后,在sas里run的时候又报错了。。。。困惑中。。。请问我这段修改后的code里哪里有错误呢?望不吝赐教。。。

[color=#0000FF:1ee5c]我修改后的code如下:[/color:1ee5c]

[code:1ee5c]data temp;
    infile 'D&#58;\SAS_assignment\wm1&#46;txt' firstobs=2;  /*the first line of data is title, ommited*/
    input Date&#58;yymmdd8&#46; CSpd RSpd;
    format Date yymmdd10&#46;;
run;[/code:1ee5c]

[color=#0000FF:1ee5c]log中的报错为:[/color:1ee5c]

[code:1ee5c]NOTE&#58; The infile 'D&#58;\SAS_assignment\wm1&#46;txt' is&#58;
      File Name=D&#58;\SAS_assignment\wm1&#46;txt,
      RECFM=V,LRECL=256

NOTE&#58; Invalid data for CSpd in line 3 1-21&#46;
NOTE&#58; Invalid data for RSpd in line 4 1-22&#46;
RULE&#58;     ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0

4   CHAR  2002/1/1/12&#46;7&#46;8&#46;7&#46;9405 22
    ZONE  3333232323303230323333
    NUMR  2002F1F1F1297E897E9405
NOTE&#58; Invalid data errors for file ''D&#58;\SAS_assignment\wm1&#46;txt'' occurred outside the printed range&#46;
NOTE&#58; Increase available buffer lines with the INFILE n= option&#46;
Date=2002-01-01 CSpd=&#46; RSpd=&#46; _ERROR_=1 _N_=1
NOTE&#58; Invalid data for CSpd in line 6 1-21&#46;
NOTE&#58; Invalid data for RSpd in line 7 1-21&#46;[/code:1ee5c]
作者: shiyiming    时间: 2007-8-25 17:56
标题: Re: 请教一个关于时间格式转换的问题
我已经找到问题的答案了~~

最后发现,原始数据里面的分隔符不是space而是tab。。。。

所以,在infile statement后面加一个 expandtabs 就好了,呵呵。。。

[color=#FF0080:e4c77]但是还有一个问题:
这种处理方法,得出来的sas表中,缺少小时的数据啊。就是说,2002/1/1/18导入后,18点这个信息就没有了,如何解决这个问题呢?[/color:e4c77]
作者: shiyiming    时间: 2007-8-26 18:28
标题: to linwise
我的思路是把“2002/1/1/18”作为字符串读进来,然后用多个字符和日期函数,总之最后变形成01JAN2002:18:00:00的形式,再用input函数datetime19.的informat转换就行了。具体程序你自己写吧。
作者: shiyiming    时间: 2007-8-26 22:39
标题: Re: 请教一个关于时间格式转换的问题
嗯~谢谢指点,我知道该怎么做了。那个project我已经做完,今天下午才吧report写好,希望以后能多多交流!

[color=#FF0000:95d9f]再次感谢!!![/color:95d9f]   <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->




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