第二章 將你的數據放入SAS(2.1-2.11)
2.1 將你的數據放入SAS的方法
你可能有各種形式的數據,包括手寫在紙上、存放在電腦上、或是在數據庫管理系統里,不論如何,總有一種方法可以讓SAS來讀取。
SAS讀取的數據的方法主要有以下幾種類型:
? 直接輸入;
? 從原始數據文件中創建一個SAS數據集(creating SAS data sets from raw data files);
? 將其他軟件中的數據文件轉換成SAS數據集;
? 直接讀取其他軟件的數據集;
直接輸入
? Viewtable窗口可以讓你以表格形式輸入數據,可以定義變量、設置屬性,如name、length和 type(character or numeric).
? SAS 企業向導模塊,a Windows only application,has a data entry window that is very similar to the Viewtable window.As with Viewtable,you can define variables and give them attributes.
? SAS/FSP 模塊,是Full Screen Product的簡稱,可以設計定制的數據輸入窗口,也有檢測數據輸入錯誤的功能(The SAS/FSP product is licensed separately from Base SAS software.)。
從原始數據文件中創建一個SAS數據集 你有兩種方法讀取原始數據文件:
? 數據步可以讀取任何形式的原始數據文件,這種方法還將在2.4中詳解。
? 導入向導(Import Wizard)、導入過程(IMPORT procedure)適用于UNIX、OpenVMS和 Windows操作環境的簡單方法,可以讀取CSV(comma-separated values)和其他一些限定的文件類型。
將其他軟件中的數據文件轉換成SAS數據集 如果數據在一個軟件中以某種格式存放,但需要用另一種軟件分析時,就會很麻煩。有幾種方法可以將某種軟件中的數據轉換成SAS數據集:
? 如果安裝SAS/ACCESS模塊,可以用導入過程(import procedure)和導入向導(Import Wizard)將Excel、Lotus、dBase和Access文件導入SAS數據集,見2.3和2.17(?)。
? 如果沒有安裝,可以用存放數據的軟件創建一個原始文件,并用數據步或導入過程(import procedure)讀取。很多軟件都可以創建CSV文件。
? Windows操作環境下也可以用動態數據交換技術(Dynamic Data Exchange,DDE),見2.18。前提是必須有一個其他的Windows程序與SAS同時運行,再使用DDE和數據步。
直接讀取其他軟件的數據集
? SAS/ACCESS產品可以不用轉換數據格式讀取數據,并適用于大部分大部分數據庫管理系統,包括ORACLE,DB2,INGRES和 SYBASE(但使用方法本書沒有介紹)。
? 使用Excel engine和Access engine來讀取這兩種類型的數據。(SAS幫助文檔)
? 還有其他的一些數據引擎(data engines)來讀取數據,如SPSS engine(附錄D),查找幫助文檔找到適合你操作環境的所有有效engine。
2.2 用Viewtable窗口輸入數據
調用Viewtable窗口,在工具欄的下拉菜單中選擇表編輯器(Table Editor)
列屬性窗口 每一列頂部的字母是默認的變量名,右擊變量名,即可打開列屬性(column attributes)窗口,設置屬性之后,點擊應用(apply),設置完后關閉即可。
輸入數據
保存表 選擇文件(file)——另存為(save as),選擇一個邏輯庫保存,如果想保存在新的邏輯庫,點擊創建新邏輯庫圖表(New Library),輸入邏輯庫的名字和保存路徑。
打開一個已有的表 首先打開表編輯器,選擇文件(file)——打開(open)。打開之后,SAS默認的是瀏覽模式,如果要對數據進行編輯,則要在編輯(edit)菜單中選擇編輯模式。也可以在資源管理器窗口中雙擊打開一個已有的表。
其他功能 其他一些功能包括排序、打印(printing)、增加和刪除行、一次瀏覽一行(窗體視圖Form View)、一次瀏覽多行(表視圖 Table View)。圖標和菜單都可以選擇這些功能。
在SAS程序中使用表 如下程序語句可以將表內容輸出打印:
PROC PRINT DATA=Sasuser.coffee;
RUN;
2.3 用導入向導(Import Wizard)讀取文件
導入向導會瀏覽你的文件以決定變量的類型,并默認數據表的第一行存放變量名。
第一步,從文件(file)下拉菜單中選擇導入數據(import data)導入向導(Import Wizard)
第二步,從standard data sources中選擇要導入的數據類型。以comma separated values(*.csv)為例。點擊下一步
第三步,指定要導入的文件位置,SAS默認第一行存放變量名,從第二行開始存放數據。Options可以改變這種默認選擇。
第四步,選擇數據集要存放的邏輯庫,并為數據集取一個名字(member)。
最后,導入向導創造一個proc import語句,可以是SAS再次導入這個數據。
另外,對于一些類型的數據文件還有額外的步驟,比如Microsoft Access文件,你需要輸入數據庫名和藥導入的表名,有時甚至還要輸入user的ID號和密碼。
在SAS程序中使用導入數據 比如你將數據存放在work邏輯庫,并署名為flowers,那么你可以這樣來輸入它:
PROC PRINT DATA=WORK.flowers;
RUN;
由于work是默認的邏輯庫,所以也可以直接這樣:
PROC PRINT DATA=flowers;
RUN;
2.4 告訴SAS你的原始數據在哪
如果數據是原始數據(比如text,ASCII,sequential,flat files),那么用數據步來讀取能帶給你最大的靈活性。但首先你要告訴SAS你的原始數據在哪。
原始數據可以通過文本編輯器(text editors)或系統命令。對PC使用者來說,原始數據沒有相關聯的應用程序(就像doc文件與word相關聯,雙擊doc程序就默認調用word程序以打開),有時他們會與像Microsoft Notepad這樣的簡單編輯器相關聯。
內部原始數據 如果直接將數據輸入SAS程序中,那么數據就是SAS內部數據。DATALINES是一個指示,告訴SAS下面跟著是數據行,直到分號結尾,這個分號可以另起一行,也可以接在數據的后面。也可以用card代替DATALINES。下面是一個程序,這個程序創建了一個USPRESIDENTS數據集。(Input語句還將在2.5和2.15中討論)
外部原始數據 數據外SAS程序外部時,使用INFILE語句告訴SAS外部數據的文件名和存放路徑,它在data語句之后,在INPUT語句之前。INFILE后面的文件名和路徑要用引號,各種系統的引用方式各不同:
假設有一個President.dat數據在你的C盤的MyRawData目錄中,
那么可以用如下方式引用這個外部數據:
SAS日志 讀取外部數據時,SAS日志會給一些很有用的信息,檢查這些信息可以解決一些問題,比如對比INFILE語句讀取的記錄數和數據集中實際觀測值,可以確定SAS是否正確的讀取了數據。上面程序的日志如下圖所示,
過長記錄 在一些操作環境中,SAS假定外部數據文件的記錄長度為256或更少(記錄長度是指某行中的字符數,包括空格),如果長度過長,SAS不能讀取全部,此時需要在INFILE語句中使用LRECL=來指定長度,這個長度必須是數據中最長行的長度,如:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? INFILE’c:\MyRawData\President.dat’LRECL=2000;
可以通過SAS日志來查看最大記錄長度。