BookmarkSubscribeRSS Feed

SASデータセットからユーザ定義フォーマットを作成する

Started ‎03-13-2018 by
Modified ‎04-19-2018 by
Views 1,887

質問

SASデータセットとして作成してあるコード表から、ユーザ定義フォーマットを作れますか。

回答

FORMATプロシジャは制御データセットと呼ばれる形式のSASデータセットから、

直接、ユーザ定義フォーマットを作成できます。


制御データセットとは、フォーマットを作成するための情報を持つSASデータセットのことです。
制御データセットには少なくとも次の変数が必要です。

 

  • START : 値範囲の始点
  • LABEL : フォーマットラベル
  • FMTNAME : フォーマット名
  • TYPE : フォーマットのタイプ(文字/数値の区別)

 

例えばSASデータセットSAMPLEに年齢と学年の対応を記録してあるとします。

 

[SASデータセット:SAMPLE]

    OBS   AGE   GRADE     
     1          6      小学1年生    
     2          7      小学2年生    
     3          8      小学3年生    
     4          9      小学4年生    
     5        10      小学5年生    
     6        11      小学6年生    
     7        12      中学1年生    
     .          .         .  

 

次のようなDATAステップでSAMPLEを加工して制御データセットを作成し、これを FORMATプロシジャのCNTLIN=オプションで指定します。

 

data formdat;
    set sample(rename=(age=start grade=label));
    fmtname='agefmt';
    type='n';
  run;
  proc format cntlin=formdat;
  run;
  proc print data=sashelp.class;
    format age agefmt.;
  run;

 

上記のPRINTプロシジャの実行結果は、次のようになります。

 

   OBS    NAME       SEX       AGE        HEIGHT    WEIGHT

    1    Alice       F     中学2年生       56.5       84.0
    2    Becka       F     中学2年生       65.3       98.0
    3    Gail        F     中学3年生       64.3       90.0
    4    Karen       F     中学1年生       56.3       77.0
    5    Kathy       F     中学1年生       59.8       84.5
    6    Mary        F     高校1年生       66.5      112.0
    7    Sandy       F     小学6年生       51.3       50.5
    8    Sharon      F     高校1年生       62.5      112.5
    9    Tammy       F     中学3年生       62.8      102.5
   10    Alfred      M     中学3年生       69.0      112.5
   11    Duke        M     中学3年生       63.5      102.5
   12    Guido       M     高校1年生       67.0      133.0
   13    James       M     中学1年生       57.3       83.0
   14    Jeffrey     M     中学2年生       62.5       84.0
   15    John        M     中学1年生       59.0       99.5
   16    Philip      M     高校2年生       72.0      150.0
   17    Robert      M     中学1年生       64.8      128.0
   18    Thomas      M     小学6年生       57.5       85.0
   19    William     M     高校1年生       66.5      112.0

参照

Base SAS® 9.4 Procedures Guide
Example 12: Creating a Format from a CNTLIN= Data Set
http://go.documentation.sas.com/?docsetId=proc&docsetTarget=n1e19y6lrektafn1kj6nbvhus59w.htm&docsetV...

Version history
Last update:
‎04-19-2018 09:23 PM
Updated by:
Contributors

SAS Innovate 2025: Register Today!

 

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags

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


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

詳細を読む

 

SAS Support CommunitiesのFAQ


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

詳細を読む

 

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


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

詳細を読む