外部導(dǎo)入數(shù)據(jù)如何設(shè)置變量的長(zhǎng)度
前兩天在工作中遇到一個(gè)問題,在使用PROC IMPORT導(dǎo)入數(shù)據(jù)的時(shí)候,數(shù)據(jù)發(fā)生了截?cái)啵a如下:
proc import datafile="文件路徑"out=Mydata dbms=xlsx replace;
getnames=no;
/* guessingrows=max;*/
run;
在以前做外部導(dǎo)入的時(shí)候都會(huì)用到guessingrows=max,就不會(huì)出現(xiàn)數(shù)據(jù)截?cái)嗟那闆r,guessingrows的作用是指定讀取文件的前多少行數(shù)據(jù),用來判斷變量的類型和長(zhǎng)度,如果不指定,默認(rèn)值是20,最大值是2147483647 (或者用MAX代替)。在本次導(dǎo)入的時(shí)候加上guessingrows=max語(yǔ)句程序會(huì)報(bào)錯(cuò),所以就把這段代碼注釋掉了,就出現(xiàn)變量截?cái)嗟那闆r。后來把xlsx文件轉(zhuǎn)換成csv格式就可以用guessingrows語(yǔ)句,上一篇文章我們說到csv格式的兼容性更好,所以之前報(bào)錯(cuò)的原因可能是編碼、格式、兼容性方面的原因。
除了轉(zhuǎn)換文件格式有沒有其他的辦法呢?答案是:有的。在proc import中是無法指定變量的長(zhǎng)度的,但是可以在data步中使用infile語(yǔ)句導(dǎo)入外部數(shù)據(jù),代碼如下:
DATA Mydata;/*設(shè)置數(shù)據(jù)名稱*/
LENGTH name $ 50;/*設(shè)置該變量的字符長(zhǎng)度*/
INFILE "C:\Users\Administrator\Desktop\Class2023.xlsx";
/*列出變量名*/
INPUT id name $ sex $ age;
run;
使用infile語(yǔ)句的時(shí)候需要用input語(yǔ)句把所有要導(dǎo)入的變量及變量類型列出來,所以不適合變量特別多的時(shí)候使用。
請(qǐng)前往:http://lygongshang.com/TeacherV2.html?id=166