SASデータセットをXPT(XPORT)という移送形式ファイルに変換する方法。
MYSASというライブラリを作り、そこにデータセットADSLを格納しときます。
| libname MYSAS "適当なパス"; data ADSL (label="SUBJECT LEVEL ANALYSIS DATASET"); USUBJID="aaa"; run; proc sort data=ADSL out=MYSAS.ADSL; by USUBJID; run; |
以下プログラムを実行するとログにWARNINGが出るかもしれません。
「制限事項」のとこで補足説明してるので今は無視してください。
libname MYXPT xport "XPTファイルを格納するパス\adsl.xpt";
proc copy in=MYSAS out=MYXPT memtype=data;
select ADSL;
run;
|
- libnameでXPTファイルを格納するライブラリ参照を定義。ここではXPTファイル名を含むフルパスを指定する。
- proc copyでMYSAS.ADSLをライブラリMYXPTに格納。
SASデータセットがSORTプロシジャでソートしてある場合、内部的にSORT情報が保持されており、この状態でXPT変換すると以下のようなWARNINGが表示されます。
| proc sort data=MYSAS.ADSL; by USUBJID; run; proc copy in=MYSAS out=MYXPT memtype=data; select ADSL; run;
ログ
WARNING: エンジンXPORTはSORTEDBY処理をサポートしていません。SORTEDBY情報はコピーできません。
|
ログに出てる通り、XPTではSORT情報が持たせられません。
WARNINGは出ているけどSORT情報がなくなっただけでXPTファイルはちゃんと出来ています。
このWARNINGが嫌であれば、この記事の最初のMYSAS.ADSLを作るプログラムのとこでSORTプロシジャにSORTEDBYオプションを追記すると、SORT情報を消すことができます。
| proc sort data=ADSL out=MYSAS.ADSL (sortedby=_null_); by USUBJID; run; |
out=にこのオプションを指定するのがポイントです。
その他の制限。
- 変数名は8文字以内
- 変数ラベルの長さは40まで
- データセットラベルも長さ40まで・・・など
CPORTプロシジャでも移送ファイル(CPTファイル)に変換できますが、
PMDAからでてる「技術的ガイドについて」という通知には「CPORT Procedureは使用しないこと」という記述があるのでご注意ください。