Saturday, July 13, 2013

[SAS] XPT檔是什麼?該如何開啟、如何使用?

對於經常使用次級資料的SAS使用者而言,對XPT檔想必並不陌生。然而為什麼公開資料的時候,為什麼盡可能要使用XPT而不是SAS Data file (e.g. .SAS7BAT)?因為與SAS Data File相較之下,XPT有以下優點:

  1. XPT可以讓使用者在不同的作業系統之間分享檔案
  2. 即使不知道接收檔案的SAS發行版為何,仍然能夠使用XPT分享檔案
  3. 使用者只要建立一次XPT,就可以分享檔案給不同SAS發行版使用

當然XPT也不是萬能的,與一般使用者較為相關的有以下限制:

  1. 僅支援SAS Data File,不支援SAS CatalogSAS view這兩種SAS檔案格式
  2. 為了要能夠相容於早期的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;

參考資料

http://support.sas.com/documentation/cdl/en/movefile/59598/HTML/default/viewer.htm#xport.htm

本著作依據Creative Commons 姓名標示-非商業性-相同方式分享授權條款釋出

No comments :