BookmarkSubscribeRSS Feed

Microsoft Excelに変数名ではなく変数ラベルを出力する方法について(2)

Started ‎03-13-2018 by
Modified ‎04-19-2018 by
Views 628

質問

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;

 

Version history
Last update:
‎04-19-2018 12:51 AM
Updated by:
Contributors

SAS INNOVATE 2024

Innovate_SAS_Blue.png

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. 

Register now!

Article Tags

SAS Support Communitiesのユーザーガイドライン


コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。

詳細を読む

 

SAS Support CommunitiesのFAQ


SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。

詳細を読む

 

質問や意見の投稿と返信方法について


Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。

詳細を読む