對於經常使用次級資料的SAS使用者而言,對XPT檔想必並不陌生。然而為什麼公開資料的時候,為什麼盡可能要使用XPT而不是SAS Data file (e.g. .SAS7BAT)?因為與SAS Data File相較之下,XPT有以下優點:
- XPT可以讓使用者在不同的作業系統之間分享檔案
- 即使不知道接收檔案的SAS發行版為何,仍然能夠使用XPT分享檔案
- 使用者只要建立一次XPT,就可以分享檔案給不同SAS發行版使用
當然XPT也不是萬能的,與一般使用者較為相關的有以下限制:
- 僅支援SAS Data File,不支援SAS Catalog與SAS view這兩種SAS檔案格式
- 為了要能夠相容於早期的SAS發行版,XPT會無法支援某些SAS9版之後才新增的功能,譬如說:長變項名稱。在使用XPT轉換發生錯誤時,請查詢此網頁以解決問題。
將XPT轉成SAS DATA File
為了方便實作,下面提供一個內含XPT檔的7zip壓縮檔,資料來自美國疾病管制局 BRFSS 2011 Survey。
在轉換XPT之前,首先必須要知道XPT內部包含幾個DATASET名稱,以及想要匯入的是那些DATASET,因此最好先用下列語法載入XPT檔來檢查
LIBNAME <Library of XPT File > XPORT <PATH OF XPT File>;
RUN;
方法一:DATA STEPS法
語法結構
LIBNAME <Library of XPT File > XPORT <PATH OF XPT File>;
LIBNAME <Library of SAS data file> <PATH OF SAS-DATA-LIBRARY>;
DATA <Library of SAS data file>.<Name of DATASET>;
SET <Library of XPT File >.<Name of DATASET>;
RUN;
範例
LIBNAME XPTIN XPORT "D:\DATA\XPT\LLCP2011.XPT";
LIBNAME MYFILE "D:\DATA\CDC" ;
DATA MYFILE.LLCP2011;
SET XPTIN.LLCP2011;
RUN;
方法二:PROC COPY法
語法結構
LIBNAME <Library of XPT File > XPORT <PATH OF XPT File>;
LIBNAME <Library of SAS data file> <PATH OF SAS-DATA-LIBRARY>;
PROC COPY IN=<Library of XPT File > OUT=<Library of SAS data file>;
SELECT <Name of DATASET>;
RUN;
範例
LIBNAME XPTIN XPORT "D:\DATA\XPT\LLCP2011.XPT";
LIBNAME MYFILE "D:\DATA\CDC" ;
PROC COPY IN=XPTIN OUT=MYFILE;
SELECT LLCP2011;
RUN;
製作XPT檔
語法與轉成SAS DATA FILE的結構差不多,只是檔案的方向有所不同。
方法一:DATA STEPS法
語法結構
LIBNAME <Library of XPT File > XPORT <PATH OF XPT File>;
LIBNAME <Library of SAS data file> <PATH OF SAS-DATA-LIBRARY>;
DATA <Library of XPT File >.<Name of DATASET>;
SET <Library of SAS data file>.<Name of DATASET>;
RUN;
範例
LIBNAME XPTOUT XPORT "D:\DATA\XPT\DATAOUT.XPT";
LIBNAME MYFILE "D:\DATA\CDC";
DATA XPTOUT.LLCP2011;
SET MYFILE.LLCP2011;
RUN;
方法二:PROC COPY法
語法結構
LIBNAME <Library of XPT File > XPORT <PATH OF XPT File>;
LIBNAME <Library of SAS data file> <PATH OF SAS-DATA-LIBRARY>;
PROC COPY IN=<Library of SAS data file> OUT=<Library of XPT File > memtype=data;
RUN;
※與轉換成DATA FILE最大的不同之處在於多了Memetype選項,如果忽略了這個選項,製作XPT的XPORT將可能會複製到SAS Views或SAS Catalogs
範例
LIBNAME XPTOUT XPORT "D:\DATA\XPT\DATAOUT2.XPT";
LIBNAME MYFILE "D:\DATA\CDC" ;
PROC COPY IN=MYFILE OUT=XPTOUT memtype=data;
RUN;
留言