SAS 读入EXCEL数据截断


在SCANTEXT = yes 前提下,PROC IMPORT是默认扫描前16行数据,所以后面过长的数据会出现截断。

guessingrows = MAX,最大为2147483647. 用2147483647行作为数据格式。

解决方法:

1. 修改注册表,因为SAS没办法该注册表,所以需要自己改

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

Double click TypeGuessRows. In the DWORD editor dialog box, click
Decimal under Base. Type a value of 0, click OK and exit Regedit.

但现在也用不了了,压根找不到这个注册表了。

2. 使用infile
把数据copy到CSV格式中,直接读取就好。

proc import OUT = raw
datafile = './_raw.csv'
DBMS = CSV replace;
delimiter = ',';  *delimiter也可能是" "或";", 有错误时挨个试下。;
getnames = yes;
/*datarow = 2;*/
guessingrows = MAX;
run;

 

data raw;
infile './_raw.csv' firstobs = 2 delimiter = ',' truncover lrecl=1000;
informat name $400.;
input name $;
run;

通过informat定义格式,避免出错。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM