SAS、SPSS、STATA 統計軟體檔案格式轉換介紹



陳家玉
[原文刊載於SRDA學術調查研究資料庫通訊第41期,2012.6]
一、  前言
市面上統計套裝軟體不勝枚舉,目前最常被使用的仍以SASSPSSSTATA為主流且各有所長。當好不容易申請或取得的資料檔,並非平時熟悉的統計軟體檔案格式時,如何將檔案進行讀取或轉換,是多數人常面臨到的問題。統計軟體檔案格式的轉換,除了利用統計套裝軟體內建的匯入及匯出功能外,Stat/Transfer是另一個快速且便利的檔案格式轉換工具。本文將統計套裝軟體的匯入/匯出功能分為二部分介紹:第一部分以各軟體資料檔間的轉換為主;第二部分介紹匯入/匯出最通用的純文字檔及普遍用於數據資料整理的EXCEL檔,於下以SAS 9.2版、SPSS 20版、STATA 12.1版逐步分述之。Stat/Transfer統計數據轉換軟體則針對介面功能操作進行介紹。
二、  匯入/匯出統計軟體資料檔功能
在說明如何轉檔前,先瞭解此三種軟體資料檔的差異性(表1),其中SPSSSTATA資料檔可以包含變項說明(variable label)與選項數值說明(value label)兩者,但SAS資料檔僅包含變項說明,選項數值說明則是另以格式檔儲存,需套用format指令才能取得。
1SASSPSSSTATA資料檔之差異
 軟體
差異性
SAS
SPSS
STATA
 
資料與格式分別儲存
資料與格式儲存在同檔案中
資料與格式儲存在同檔案中
資料檔
*.sas7bdat
*.sav
*.dta
格式檔
*.sas7bcat
數據資料因受限於統計軟體資料檔支援性的問題,較常以純文字檔,搭配語法(syntax)撰寫進行檔案讀取。隨著套裝軟體視窗版的不斷發展、更新且越具易用性,可支援多種檔案類型的匯入與匯出,使得程式語法不再是絕對必要,讓使用者省去自行撰寫程式的麻煩,能快速又方便地讀取或轉換資料。



(一)     SAS軟體匯入及匯出SPSS/STATA資料檔
1、   檔案匯入(圖示以SPSS資料檔為例)
由工具列按下檔案 > 匯入資料,直接選取SPSSSTATA資料檔的格式與檔案。
檔案預設存放於SAS WORK library中,並於Member自訂檔案名稱,按下Finish後即可將檔案匯入。原資料檔中變項說明與選項數值說明,也一併匯入至SAS Formats檔。
除透過視窗點選外,亦可利用語法讀取檔案,語法請參考如下:
PROC IMPORT OUT= WORK.srda
DATAFILE= "c:\srda.sav"
DBMS=SAV REPLACE;
RUN;
1、   檔案匯出(圖示以SPSS資料檔為例) 
由工具列按下檔案 > 匯出資料,直接選取SPSSSTATA資料檔格式及儲存路徑;若有SAS Formats檔,其變項說明與選項數值說明,也會一併匯出。






整個匯出步驟可透過Create SAS statements存取為程式語法,以便往後程式執行時使用。


語法請參考如下:
PROC EXPORT DATA= WORK.srda
OUTFILE= "c:\srda.sav"
DBMS=SAV REPLACE;
RUN;

(二)      SPSS軟體匯入及匯出SAS/STATA資料檔
1、   檔案匯入(圖示以STATA資料檔為例)
由工具列按下檔案 > 開啟 > 資料。

需特別留意因SAS 資料檔(.sas7bdat)與格式檔(.sas7bcat)是分別儲存,若以視窗點選介面操作,則無法將對應的選項數值說明一併匯入,須另撰寫程式語法,以formats副指令(subcommand)宣告格式檔的檔案路徑才可匯入。

語法請參考如下:
GET SAS DATA='c:\srda.sas7bdat'
/FORMATS ='c:\formats.sas7bcat'.



2、   檔案匯出(圖示以SAS資料檔為例)
由工具列按下檔案 > 另存新檔。

直接選取SASSTATA資料檔版本後,進行儲存。匯出SAS資料檔若勾選「將數值標記儲存至.sas檔案」,即可一併產生proc format語法檔,便於資料之使用。



語法請參考如下:
SAVE TRANSLATE OUTFILE='c:\srda.sas7bdat'
  /TYPE=SAS
  /VERSION=7
  /PLATFORM=WINDOWS
  /MAP
  /REPLACE
  /VALFILE='c:\srda.sas'.



(三)     STATA軟體匯入及匯出SAS Transport檔、SPSS資料檔
STATA僅提供SAS Transport檔(*.xpt)匯入與匯出,並不實際支援SAS資料檔(如 *.sas7bdat')的讀取,usesas指令也只限於有安裝SAS軟體的環境下才可使用;對於SPSS檔案支援部分,使用usespss指令則不需要透過任何軟體,也不需額外花費檔案轉換工具的費用,即可由STATA匯入SPSS資料檔,但無法由視窗介面操作,須撰寫程式指令處理,目前亦無支援匯出功能。
1、   SAS Transport檔(*.xpt)匯入/匯出
由工具列按下File > Import/Export > SAS XPORT



 匯入時選取檔案,若無SAS格式檔可於Options勾選忽略formats.xpf檔,以避免錯誤訊息產生;匯出時可選擇將選項數值說明儲存於formats.xpf檔及SAS程式檔中。




語法請參考如下:
fdause "c:\srda.xpt", novallabels

fdasave "c:\srda.xpt", rename vallabfileboth

2、   SPSS檔(*.sav)匯入
利用ssc指令安裝usespss模組(module ,首先於Command視窗鍵入ssc install usespss,安裝完成後,續於指令列撰寫usespss語法,即可成功匯入SPSS檔。
語法請參考如下:
ssc install usespss
usespss using "c:\ srda.sav"



三、匯入/匯出「純文字檔」及「Excel檔」功能
不論電腦檔案格式如何演變,可跨平台使用、不受軟體版本限制、相容性高且最為通用的檔案格式仍是純文字檔;而數據資料的輸入建檔,最普遍且最常使用的則是Excel檔,因此上述三種統計套裝軟體大都支援純文字檔及Excel檔的匯入及匯出,以下逐一分述之。
(一)     SAS匯入/匯出「純文字檔」及「Excel檔」
1、 純文字檔匯入/匯出由工具列按下檔案 > 匯入資料/匯出資料,依檔案格式可選擇分隔符號文字檔:
·       逗點分隔檔(Comma Separated Values *.csv))
·       Tab分隔檔(Tab Delimited File*.txt))
·       其他字元分隔檔(Delimited File*.dat))
該類檔案格式無法儲存變項說明與選項數值說明的資訊,使用者需再另行撰寫語法宣告之(LABELPROC FORMAT)。若為固定寬度文字檔(Fixed-Width Text File),則需採INFILE語法讀取外部資料檔並以INPUT定義變項欄位。


在輸出設定(Options)中,分隔字元(Delimiter)可選擇空白分隔(Space)或於Character輸入自訂字元。



2、 SAS 9.2版尚未支援Microsoft Excel 20072010預設檔案格式(*.xlsx),匯入/匯出時請先將檔案儲存為較舊的相容版本(Microsoft Excel 2003以下)。


(二)     SPSS匯入/匯出「純文字檔」及「Excel檔」
1、 純文字檔匯入由工具列按下檔案 > 讀取文字資料。


檔案類型可分為Tab分隔檔(*.txt)、固定寬度文字檔(*.dat)、逗點分隔檔(*.csv),選取檔案按下開啟後,依據文字匯入精靈逐步設定,即可完成資料讀取。[1]


其中固定寬度文字檔,可設定分行讀取(多少行代表一個觀察值),但需以拖曳方式或逐一輸入欄數後按插入分行,指定各變項開始的位置,步驟較為繁雜且容易有誤,因此在讀取該類檔案時,建議採用DATA LIST FILE語法讀取資料檔,以利定義變項欄位寬度。

檔案匯出則由工具列按下檔案 > 另存新檔,檔案類型分為Tab分隔檔(*.dat),逗點分隔檔(*.csv),固定ASCII*.dat),可勾選是否將變數名稱寫入至檔案中,即完成資料匯出。


2、 SPSS 16.0版以上始支援Microsoft Excel 20072010*.xls, *.xlsx, *.xlsm)檔匯入和匯出。

(三)     STATA匯入/匯出「純文字檔」及「Excel檔」
由工具列按下File > Import,檔案類型依序為Excel*.xls, *.xlsx)、分隔符號文字檔(自動判定分隔符號、Tab、逗點、自訂字元分隔)、固定寬度文字檔,選取格式與檔案後即可匯入。STATA 12.0版以上開始支援Excel檔的匯入與匯出。
接續選取檔案來源,檔案類型預設為Raw Files*.raw),需在選取檔案時下拉重新選取,方可開啟檔案。 

固定寬度文字檔在匯入時需先建立STATA dictionary欄位定義檔(*.dct)或於Specifications逐一填入各變項欄位定義等資訊。 




[1] 可將該次設定,儲存成文字精靈預先定義格式(*.tpf),供日後再次匯入使用。


留言

這個網誌中的熱門文章

使用Python進行資料整理 – 初探Pandas

資料整理與檢誤經驗談—以SPSS程式進行邏輯檢查