BookmarkSubscribeRSS Feed

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

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

質問

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

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
Article Labels
Article Tags

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


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

詳細を読む

 

SAS Support CommunitiesのFAQ


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

詳細を読む

 

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


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

詳細を読む