SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2341|回复: 15
打印 上一主题 下一主题

求助数据问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-8-28 14:27:46 | 只看该作者

求助数据问题

各位大侠:
有个excel表,想导入sas操作,但是始终无法导入,请各位帮帮忙,谢谢!

数据如下,时间格式类似于“2009-7-3 12:07”(其中的“——”代表该项的观测值为空,因为在此论坛编辑时,空格不显示,为了避免同别的变量混淆,所以用“——”区分,实际数据中是没有“——”的):

代码     号码       是否标准    预收时间         扫描时间            银行            财务确认时间
10560       61576               标准    2009-7-3 12:07        2009-7-3 8:42            中国工商银行            ——
10560       ——        标准    2009-7-3 12:07           ——              ——                 ——
10560       61576            标准    2009-7-3 8:45          2009-7-3 8:43            中国工商银行            ——
10560        ——       标准    2009-7-3 8:45             ——             ——              2009-7-6 10:19
10505       61539            标准    2009-7-3 10:58         2009-7-3 9:58           中国工商银行        2009-7-6 10:19
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-8-28 16:34:51 | 只看该作者

Re: 求助数据问题

[code:2sxo0omo]data temp(drop=text);
        retain id var2-var14;
        infile datalines truncover;
        input text $256.;
        if mod(_n_,2)=1 then do;
                        id=put(scan(text,1,' '),$5.);    /* 机构代码 */
                        var2=put(scan(text,2,' '),$2.);  /* 渠道 */
                        var3=put(scan(text,3,' '),$8.);  /* 代码 */
                        var4=put(scan(text,4,' '),$8.);  /* 授权书号 */
                        var5=put(scan(text,5,' '),$8.);  /* 是否标准 */
                        var6=dhms(input(scan(text,6,' '),yymmdd10.),hour(input(scan(text,7,' '),time5.)),minute(input(scan(text,7,' '),time5.)),0);      /* 预收时间 */
                        var7=dhms(input(scan(text,8,' '),yymmdd10.),hour(input(scan(text,9,' '),time5.)),minute(input(scan(text,9,' '),time5.)),0);      /* 录入时间 */
                        var8=dhms(input(scan(text,10,' '),yymmdd10.),hour(input(scan(text,11,' '),time5.)),minute(input(scan(text,11,' '),time5.)),0);   /* 复查时间 */
                        var9=dhms(input(scan(text,12,' '),yymmdd10.),hour(input(scan(text,13,' '),time5.)),minute(input(scan(text,13,' '),time5.)),0);   /* 核定时间 */
                        var10=dhms(input(scan(text,14,' '),yymmdd10.),hour(input(scan(text,15,' '),time5.)),minute(input(scan(text,15,' '),time5.)),0);  /* 接受时间 */
                        var11=dhms(input(scan(text,16,' '),yymmdd10.),hour(input(scan(text,17,' '),time5.)),
                                                minute(input(scan(text,17,' '),time5.)),second(input(scan(text,17,' '),time5.)));  /* 扫描时间 */
                        var12=put(scan(text,18,' '),$16.); /* 付款方式 */
                        var13=put(scan(text,19,' '),$20.); /* 银行 */
                        var14=dhms(input(scan(text,20,' '),yymmdd10.),hour(input(scan(text,21,' '),time5.)),minute(input(scan(text,21,' '),time5.)),0);  /* 财务确认时间 */
                        output;
                end;
        else do;
                        var12=put(scan(text,15,' '),$20.); /* 银行 */
                        output;
                end;
        format text $256. var6-var11 var14 datetime13.;
datalines;
10560 个 74472620 00061576 标准 2009-7-3 12:07 2009-7-3 10:49 2009-7-3 10:52 2009-7-3 13:20 2009-7-6 10:19 2009-7-3 8:42:33 全国通异地转账 中国工商银行 2009-7-6 10:19
10560 个 74472620 标准 2009-7-3 12:07 2009-7-3 10:49 2009-7-3 10:52 2009-7-3 13:20 2009-7-6 10:19 一般内部转帐 2009-7-6 10:19
10560 个 74477190 00061576 标准 2009-7-3 8:45 2009-7-3 9:03 2009-7-3 9:03 2009-7-3 9:04 2009-7-6 10:19 2009-7-3 8:43:10 全国通异地转账 中国工商银行 2009-7-6 10:19
10560 个 74477190 标准 2009-7-3 8:45 2009-7-3 9:03 2009-7-3 9:03 2009-7-3 9:04 2009-7-6 10:19 一般内部转帐 2009-7-6 10:19
10505 个 66265482 00061539 标准 2009-7-3 10:58 2009-7-3 11:09 2009-7-3 11:09 2009-7-3 11:10 2009-7-6 10:19 2009-7-3 9:58:17 全国通异地转账 中国工商银行 2009-7-6 10:19
10505 个 66265482 标准 2009-7-3 10:58 2009-7-3 11:09 2009-7-3 11:09 2009-7-3 11:10 2009-7-6 10:19 一般内部转帐 2009-7-6 10:19
105 个 74290993 00065053 标准 2009-7-3 14:05 2009-7-6 9:14 2009-7-6 9:31 2009-7-6 9:31 2009-7-6 10:19 2009-7-3 10:38:56 客户银行转帐 中国工商银行 2009-7-6 10:19
105 个 74290993 标准 2009-7-3 14:05 2009-7-6 9:14 2009-7-6 9:31 2009-7-6 9:31 2009-7-6 10:19 一般内部转帐 2009-7-6 10:19
;[/code:2sxo0omo]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-8-28 16:50:59 | 只看该作者

Re: 求助数据问题

谢谢楼上,
但是我现在的数据有20多万条记录,一条条输入不太现实,怎么将现有的excel数据表导入sas?数据形式和上面贴的都一样,只是有的数据可能是空的,比如时间,有的有,有的为空。
每次导入时都会出问题
请各位大侠多出出注意
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-8-28 17:12:14 | 只看该作者

Re: 求助数据问题

直接用SAS读数据库吧.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-8-28 17:18:59 | 只看该作者

Re: 求助数据问题

嗯,如果你的excel表格规范的话,应该就可以直接用import过程读入的
或者你简化一下数据列,这样可以看的更加清楚数据结构,现在比较混乱
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-8-31 14:03:41 | 只看该作者

Re: 求助数据问题

谢谢各位大侠,数据导入有问题的,因为数据不是很标准,比如有时间的一列,某些观测是空的。
数十万条观测,十多个变量,放在csv文件中,没法直接操作,因为不能完全显示。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-8-31 14:25:46 | 只看该作者

Re: 求助数据问题

csv? <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->
那你贴出来的demo数据怎么不显示&quot;,&quot;? 直接从excel表copy的数据吧.
用input语句读吧
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-9-6 14:06:11 | 只看该作者

Re: 求助数据问题

PROC IMPORT DATAFILE='D:\user\class.xls'
        OUT = mylib.class1
            DBMS = excel
            REPLACE ;
                sheet='GRADES1';
            GETNAMES = yes;
TITLE 'Reading in Data from excel';
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2009-9-9 12:34:28 | 只看该作者

Re: 求助数据问题

[quote=&quot;hopewell&quot;:24j2tgun]csv? <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->
那你贴出来的demo数据怎么不显示&quot;,&quot;? 直接从excel表copy的数据吧.
用input语句读吧[/quote:24j2tgun]



是csv文件,这种文件可以放上百万条记录,但是只能显示6万多条,而且不能对其中的数据操作,一旦操作会丢失未显示的部分。

用input的语句不行的,举个例子说

数据中的字段“财务确认时间”,如果第一条记录为空,第二条记录非空,第三条记录为空等等,在读入时会将此列删除,而读入下一列。
有没有办法在读入时能够识别这个变量是否为空呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2009-9-9 13:08:28 | 只看该作者

Re: 求助数据问题

[quote=&quot;andrawliu&quot;:1zlyvwjv]PROC IMPORT DATAFILE='D:\user\class.xls'
        OUT = mylib.class1
            DBMS = excel
            REPLACE ;
                sheet='GRADES1';
            GETNAMES = yes;
TITLE 'Reading in Data from excel';
run;[/quote:1zlyvwjv]


谢谢!
但是还是不行,比如,如果一个变量前10个观测值为空,后面有的为空有的非空,但是非空的部分长度大于15,如“2009-7-3  11:21:00”,运行的结果是这个变量没有数据的部分为空,有数据的部分仅仅提取了部分作为数据,如“2009-7-3  11:21:00”,提取的可能仅仅是20.
数据并不是标准格式,有没有办法解决呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 07:57 , Processed in 0.071882 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表