??
2.17用導入過程(IMPORT procedure)讀取PC文件
如果安裝了SAS/ACCESS模塊,導入過程(IMPORT procedure)可以導入一些PC文件類型。
它會瀏覽你的文件以決定變量類型,并默認使用數據的第一行來分配變量名。Wi ndows操作環境中可以導入excel、Lotus、dBase、和Access文件。Unix系統中可以導入dBase文件,并且從SAS9.1開始,Unix系統也可以導入excel和access文件。在windows環境中有一個不需要SAS/ACCESS模塊的方法——Dynamic Data Exchange(DDE),將在2.18中講解。
Microsoft Excel,Lotus,和dBase文件下面是用導入過程(IMPORT procedure)讀取PC文件的一般過程:
PROC IMPORT DATAFILE=’fi l ename’ OUT=data-set DBMS=i denti fi er REPLACE;
如果讀取的文件是如下類型,就不用DBMS=OPTION。
在讀取excel時,有時需要指定要讀取的是哪一個工作薄——sheet
SHEET=name-of-sheet;
默認情況下,導入過程(IMPORT procedure)會從工作薄的第一行中讀取變量名。如果不需要,可以用如下代碼使得SAS給變量賦名為F1,F2等。
GETNAMES=NO;
Mi crosoft Access Files讀 取 這 種 文 件 需 要 用DATABASE=和DATATABLE=, 而 不 是
DATAFILE=option。
2.18用DDE讀取PC文件
DDE,動態數據交換(Dynamic Data Exchange),讀取PC文件的優點為:可以直接訪問存于PC文件中的數據,不要求購買其他SAS產品;缺點為:只能用在windows環境下,只能在程序運行時(比如excel),SAS才能進行讀取。
有幾種方式可以用DDE訪問數據:
?復制數據到剪貼板
?指定DDE三元組
?從SAS中啟動PC程序,然后讀取數據。
復制數據到剪貼板 ?可以直接復制數據至剪貼板,然后再SAS程序的DDE FILENAME語句中是使用CLIPBOARD關鍵字。比如,excel中有如下的工作?。?/p>
FILENAME語句將指代的文件(BASEBALL)定義成DDE類型,并指定從剪貼板中去讀取它(CLIPBOARD)。DDE默認空格為分隔符,如果變量值之間有空格,則要在INFILE語句中用NOTAB選項和DLM=’09’X選項,前者告訴SAS在變量值之間放置制表符, 后者告訴SAS將制表符定義為分隔符。如果數據中有缺失值,則要在INFILE中加入DSD和MISSOVER選項,前者將兩個連續的分隔符視為缺失值,后者告訴SAS如果此行讀完,不要進入下一行給未賦值的變量賦值。
指定DDE三元組這種方法可以不用復制數據,直接指定出文件的DDE三元組。DDE三元組的形式為:application| topic ! item。
有一種方法可以在SAS中直接查看文件的DDE三元組,方法為:復制數據至剪貼板里,觸發SAS會話,從解決方案(Solution)菜單中選擇附件(accessories) ——DDE三元組。一個窗口會出現你復制文件的DDE三元組。比如,一個工作薄的DDE三元組為:
Excel |C:\MyFi l es \[BaseBal l .xl s]sheet1!R2C1:R5C7
讀取這個文件的FILENAME語句為:
FILENAME basebal l DDE'Excel |C:\MyFi l es \[BaseBal l .xl s]sheet1!R2C1:R5C7';
從SAS中啟動程序 這種方法可以不用在運行SAS之前啟動數據程序。想要從SAS中啟動程序,然后讀取數據,則首先需要NOXWAIT和NOXSYNC系統選項,然后使用X語句,一個例子:
NOXSYNC和NOXWAIT語句告訴SAS不要等待用戶輸入。X語句告訴windows執行或打開引號中路徑的文件,注意這里路徑設置了兩個引號,如果路徑中有空格,則要設置兩個引號。使用這種方法,必須要在FILENAME語句中指定DDE三元組。