全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4339 6
2012-09-09
有一个SQL拿来的数据库结构如下:
2012-03-05,1,2012-3-5,2012-3-5
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:13:18
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:06:31
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:07:16
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:04:44

求问如何导入SAS
貌似没有一种datetime的格式对应于YYYY-M-D H:MM:SS的结构啊。。
跪谢大神求教!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-9-9 16:01:00
直接导进去会出什么结果?可否贴个sql的数据集出来?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-9 18:57:01
nomad5 发表于 2012-9-9 16:01
直接导进去会出什么结果?可否贴个sql的数据集出来?
额。。拿到的数据集已经是txt的了。。只是时间的格式sql的格式,数据集就是如上所示的样子~一个日期,一个数值,再两个时间。。求教code
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-9 19:19:48
那等于是从txt文件导入sas?
如果是这样,和sql格式就没有关系了吧。
全字符导入,然后再处理。

我把上面那段粘贴到txt里面,就是你的原始数据?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-9 19:29:02
nomad5 发表于 2012-9-9 19:19
那等于是从txt文件导入sas?
如果是这样,和sql格式就没有关系了吧。
全字符导入,然后再处理。
嗯~每行的结构是那样的,但是数据集要比这个大得多大概有10万行吧。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-9 20:02:07
如果只有这种格式
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:13:18
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:06:31
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:07:16
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:04:44
那么
proc import datafile="C:\Users\Desktop\test.txt"
    out=class
    dbms=dlm replace;
    delimiter=",";
    getnames=no;
run;
直接导入就会只标准的sas日期格式。

如果中间穿插着
2012-03-05,1,2012-3-5,2012-3-5
那么最后两个变量会被认为是字符。
先用上面程序去导入sas。
然后通过程序去处理。
data final;
    set class;
    format var3_d yymmdd10. var3_t time9. var3_dt datetime20. var4_d yymmdd10. var4_t time9. var4_dt datetime20.;

    var3_d=mdy(scan(scan(strip(var3),1,' '),2,'-'),scan(scan(strip(var3),1,' '),3,'-'),scan(scan(strip(var3),1,' '),1,'-'));
    var3_t=hms(scan(scan(strip(var3),2,' '),1,':'),scan(scan(strip(var3),2,' '),2,':'),scan(scan(strip(var3),2,' '),3,':'));
    if missing(var3_t) then var3_dt=var3_d*60*60*24;
    else var3_dt=var3_d*60*60*24+var3_t;

    var4_d=mdy(scan(scan(strip(var4),1,' '),2,'-'),scan(scan(strip(var4),1,' '),3,'-'),scan(scan(strip(var4),1,' '),1,'-'));
    var4_t=hms(scan(scan(strip(var4),2,' '),1,':'),scan(scan(strip(var4),2,' '),2,':'),scan(scan(strip(var4),2,' '),3,':'));
    if missing(var4_t) then var4_dt=var4_d*60*60*24;
    else var4_dt=var4_d*60*60*24+var4_t;
run;  


我能想到的处理方法就是这样了。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群