SASデータセットをMS-Excelにエクスポートする際、1行目に変数名ではなくラベルを出力することはできますか?
SAS/ACCESS Interface to PC Files利用している場合、MS Excel形式への出力にはEXPORTプロシジャを使用できますが、このプロシジャには変数名の代わりに変数ラベルを出力する機能はありません。
このとき、変数ラベルを変数名に変換する操作を実施した後で、EXPORTプロシジャを利用する方法が考えられます。変数名を変更するにはいくつかの方法が考えられますが、次の例ではビューを利用して出力用にデータセットを作成する方法をご紹介します。
なお、変数名に日本語や空白文字を利用する場合、VALIDVARNAME=ANYオプションを利用することで表現可能です。この際の変数名の指定方法は、下記のとおりです。
'変数名'n
※ 変数ラベルが32バイトを超える場合、そのまま変数名には利用できず33バイト以降が切り捨てられます。
このような場合は、適切な修正が必要となります。
/* 変数ラベルを変数名にしたデータセットを作成するマクロ */
%MACRO change(libnm,dsnm,odsn);
PROC SQL NOPRINT;
SELECT COUNT(name) INTO :nobs
FROM DICTIONARY.COLUMNS
WHERE LIBNAME=UPCASE("&libnm") AND MEMNAME=UPCASE("&dsnm");
SELECT NAME INTO :name1-:name%LEFT(&nobs)
FROM DICTIONARY.COLUMNS
WHERE LIBNAME=UPCASE("&libnm") AND MEMNAME=UPCASE("&dsnm");
SELECT LABEL INTO :label1-:label%LEFT(&nobs)
FROM DICTIONARY.COLUMNS
WHERE LIBNAME=UPCASE("&libnm") AND MEMNAME=UPCASE("&dsnm");
QUIT;
DATA &odsn / VIEW=&odsn;
SET &libnm..&dsnm(RENAME=(
%DO I=1 %TO &nobs;
%IF "&&label&I" NE "" %THEN %DO;
&&name&I = "&&label&I"N
%END;
%END;
));
RUN;
%MEND;
/* 利用例 */
/* サンプルデータ */
/* 日本語のラベルがあるデータセット */
DATA test ;
LABEL x='SAS Institute Japan' y='テクニカルサポート';
x=1; y=2; z=3;
RUN;
/* オプションを有効にする */
OPTIONS VALIDVARNAME=ANY;
/* WORK.TESTから変数ラベルを変数名に変換した */
/* データセットWORK.TEST2を作成する */
%change(work, test, test2);
/* Excel形式ファイルにエクスポートする */
PROC EXPORT DATA=test2 DBMS=Excel FILE='c:\temp\test.xlsx' REPLACE;
RUN;
/* オプションをデフォルトに戻す */
OPTIONS VALIDVARNAME=V7;
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。
SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。
Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。