楼主: jiny.zheng
4395 6

关于从SQL把数据导入SAS [推广有奖]

  • 1关注
  • 0粉丝

大专生

61%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
396 点
帖子
35
精华
0
在线时间
48 小时
注册时间
2012-4-21
最后登录
2014-3-9

楼主
jiny.zheng 发表于 2012-9-9 15:33:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有一个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的结构啊。。
跪谢大神求教!
二维码

扫码加我 拉你入群

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

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

关键词:数据导入 sql datetime ATET time 数据库 如何

回帖推荐

nomad5 发表于6楼  查看完整内容

如果只有这种格式 2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:13:18[/backcolor] 2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:06:31[/backcolor] 2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:07:16[/backcolor] 2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:04:44[/backcolor] 那么[/backcolor] proc import datafile="C:\Users\Desktop\test.txt" out=class dbms=dlm replace; delimiter=","; getnames=no; ...

本帖被以下文库推荐

沙发
nomad5 发表于 2012-9-9 16:01:00
直接导进去会出什么结果?可否贴个sql的数据集出来?

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

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

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

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

地板
nomad5 发表于 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;  


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

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

7
jiny.zheng 发表于 2012-9-9 20:06:33
nomad5 发表于 2012-9-9 20:02
如果只有这种格式
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:13:18
2012-03-05,1,2012-3-5  ...
好细致的回复,实在非常感谢您

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 19:19