SAS中文论坛
标题:
求助数据问题
[打印本页]
作者:
shiyiming
时间:
2009-8-28 14:27
标题:
求助数据问题
各位大侠:
有个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
作者:
shiyiming
时间:
2009-8-28 16:34
标题:
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]
作者:
shiyiming
时间:
2009-8-28 16:50
标题:
Re: 求助数据问题
谢谢楼上,
但是我现在的数据有20多万条记录,一条条输入不太现实,怎么将现有的excel数据表导入sas?数据形式和上面贴的都一样,只是有的数据可能是空的,比如时间,有的有,有的为空。
每次导入时都会出问题
请各位大侠多出出注意
作者:
shiyiming
时间:
2009-8-28 17:12
标题:
Re: 求助数据问题
直接用SAS读数据库吧.
作者:
shiyiming
时间:
2009-8-28 17:18
标题:
Re: 求助数据问题
嗯,如果你的excel表格规范的话,应该就可以直接用import过程读入的
或者你简化一下数据列,这样可以看的更加清楚数据结构,现在比较混乱
作者:
shiyiming
时间:
2009-8-31 14:03
标题:
Re: 求助数据问题
谢谢各位大侠,数据导入有问题的,因为数据不是很标准,比如有时间的一列,某些观测是空的。
数十万条观测,十多个变量,放在csv文件中,没法直接操作,因为不能完全显示。
作者:
shiyiming
时间:
2009-8-31 14:25
标题:
Re: 求助数据问题
csv? <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->
那你贴出来的demo数据怎么不显示","? 直接从excel表copy的数据吧.
用input语句读吧
作者:
shiyiming
时间:
2009-9-6 14:06
标题:
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;
作者:
shiyiming
时间:
2009-9-9 12:34
标题:
Re: 求助数据问题
[quote="hopewell":24j2tgun]csv? <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->
那你贴出来的demo数据怎么不显示","? 直接从excel表copy的数据吧.
用input语句读吧[/quote:24j2tgun]
是csv文件,这种文件可以放上百万条记录,但是只能显示6万多条,而且不能对其中的数据操作,一旦操作会丢失未显示的部分。
用input的语句不行的,举个例子说
数据中的字段“财务确认时间”,如果第一条记录为空,第二条记录非空,第三条记录为空等等,在读入时会将此列删除,而读入下一列。
有没有办法在读入时能够识别这个变量是否为空呢?
作者:
shiyiming
时间:
2009-9-9 13:08
标题:
Re: 求助数据问题
[quote="andrawliu":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.
数据并不是标准格式,有没有办法解决呢?
作者:
shiyiming
时间:
2009-9-9 17:46
标题:
Re: 求助数据问题
csv文件是分割符固定的还是列固定的?
如果是分割符固定的,用List Input,指定dlm;如果行末有变量缺失,infile语句用truncover;
如果是列固定的,用Column Input或Formatted Input.
作者:
shiyiming
时间:
2009-9-11 13:37
标题:
Re: 求助数据问题
to hopewell
谢谢!
如果将数据用input导入sas,或者将csv文件的扩展名改为txt,显示的有引号,而且也有逗号
作者:
shiyiming
时间:
2009-9-16 05:14
标题:
Re: 求助数据问题
将刘先生(女士)的代码加一句:guessingrows=5000;即为:
PROC IMPORT DATAFILE='D:\user\class.xls'
OUT = mylib.class1
DBMS = excel
REPLACE ;
sheet='GRADES1';
GETNAMES = yes;
guessingrows=600;
TITLE 'Reading in Data from excel';
run;
加了这一句,在前600行中寻找typ和length,应该不会有错了。当然,如果前600行的这一列所有值都为空,而第601行不空,也会有错。这种情况下,将guessingrows的取值加大。
作者:
shiyiming
时间:
2009-9-16 09:46
标题:
Re: 求助数据问题
我遇到类似的问题,可能的原因是:
1. 你的SAS不识别中文的变量名;
2. Excel表中的变量过多,2003允许输入256个变量,但是不能全用,只有变量少于256个时,才可导入sas。
Bless you!
作者:
shiyiming
时间:
2009-11-30 17:00
标题:
Re: 求助数据问题
to lctrapani
谢谢!但是报错,不识别guessingrows,看来还得好好试试
作者:
shiyiming
时间:
2009-11-30 17:03
标题:
Re: 求助数据问题
to xinhy
谢谢!
1、跟是否中文变量名没有关系,sas可以自动定义成应为变量名
2、我的变量最多不会超过30个,
所以跟您说的原因可能不一样。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2