BEAGLE-HC 医薬品、医療機器の研究・開発 ポータルサイト
 現在位置 : HOME > ITの活用 プログラミング > SASシステム
くすりのこと
 治療薬の最前線
データブック
 ヘルスケア市場
 データブック
 (売上ランキング)
ニュース
 企業ニュース
 (パイプラインニュース)
 (財務・決算ニュース)
 (M&Aニュース)
 メディアニュース
ITの活用
 バリデーション
 セキュリティ
 WORD文書の作成
 プログラミング
 (Word/VBA)
 (Excel/VBA)
 (Access/VBA)
 (SAS)
 (SQL)
イベント
 イベントカレンダ
製薬会社研究
 製薬会社
 製薬会社研究
 決算短信一覧
 
 
 
SASシステム 開始・終了処理 ファイル操作 プログラム制御
データ操作(関数) データベース操作 グラフ操作 マクロ
レポート 統計解析 デバッグ  
本章では、SASシステムについて説明します。
Page Index
●SASシステムとは
●SASのプロダクト構成
●SASの実行環境
●基本ウィンドウ
●コーディング規則
●SASデータセット
●オブザベーションと変数
●SASライブラリ
●SASプログラムの構造
●DATAステップ
●PROCステップ
●プログラミングステートメント
●グローバルステートメント
●プログラムで使えるデータ【変数】
●プログラムで使えるデータ【変数】:配列
●フォーマット/インフォーマット(FORMAT/INFORMAT)
●欠損値
SASシステムとは
SASシステムは、メインフレームからパーソナルコンピュータまで、共通のアプリケーションとデータを使用することができます。
また、MEA(Multi Engine Architecture)により、エクセル、アクセス、オラクルをはじめ、さまざまな形式のファイルを利用することができます。
 
SASのプロダクト構成 ↑ このページの最初へ
標準的な4プロダクト
 ・Base SAS
 ・SAS/STAT
 ・SAS/GRAPH
 ・SAS Enterprise Guide
その他のプロダクト
 ・SAS/ACCESS
 ・SAS/AF : さまざまなGUIアプリケーション. を作成することができる
 ・SAS/ASSIST
 ・SAS/CONNECT
 ・SAS/EIS
 ・SAS/ETS
 ・SAS/FSP
 ・SAS/Genetics
 ・SAS/IML
 ・SAS/INSIGHT
 ・SAS/SHARE
 ・SAS/IntrNet
 
SASの実行環境 ↑ このページの最初へ


 
基本ウインドウ ↑ このページの最初へ
SASシステムを起動したときに表示される「PROGRAM EDITOR」、「LOGウィンドウ」とプログラムの実行結果を表示するための「OUTPUTウィンドウ」を基本ウィンドウといいます。
【PROGRAM EDITOR】
 SASのプログラムを入力します。

【LOG ウインドウ】

 エラーや処理完了メッセージ等、プログラムの実行過程が表示まれます。

 表示されている内容をファイルに保存することができます。
 (PRINTTOプロシジャを使用してログやアウトプットの出力先を外部ファイルに切り替えることができます)

  /*LOG出力先を外部ファイルに切り替える*/
  /*NEWオプションは同名のファイルが存在するとき上書きする*/

  PROC PRINTTO LOG="c:\sasout\output.lst" NEW;
  RUN;

  PROC LOG DATA=sashelp.class;
  RUN;

  /* 出力先をOUTPUTウィンドウに戻す */
  PROC PRINTTO;
  RUN;


【OUTPUT ウインドウ
 プログラムの実行結果が表示されます。表示されている内容をファイルに保存することができます。
 (PRINTTOプロシジャを使用してログやアウトプットの出力先を外部ファイルに切り替えることができます)

  /* 出力先をc:\sasout\output.lst に変更する */
  /*NEWオプションは同名のファイルが存在するとき上書きする*/

  PROC PRINTTO PRINT="c:\sasout\output.lst" NEW;  

  RUN;

  PROC PRINT DATA=sashelp.class;
  RUN;

  /* 出力先をOUTPUTウィンドウに戻す */
  PROC PRINTTO;
  RUN;

 
コーディング規則 ↑ このページの最初へ
@ プログラムはステートメントで構成します。

A ステートメントは必ず
「セミコロン(;)」で終わります。

B 文字列を除いて小文字、大文字は区別しません。

C 変数名、配列名、データセット名、マクロ名、マクロ変数名は、32文字以内とします。
  ・先頭の文字は英文字または下線(_)
  ・2文字目以降は,英文字,数字,下線(_)のどれを用いてもよい
  ・ブランク( 空白) は使用できない
  ・文字変数は変数名の後に "$”をつける

D 関数名は、16文字以内とします。

E ライブラリの参照名は、8文字以内とします。

F 「* 」で始まる行、または「/*    */」で囲まれた部分はコメントとして扱います。
 
SASデータセット ↑ このページの最初へ
@ SASデータセットは、SASシステム独自のファイル形式となっています。

A SASデータセットは、
「ディスクリプター部」と、「データフ部」からなります。

B ディスクリプター部は、SASデータセットの属性や作成日付、レコード数などの情報を記録します。

C データ部は、実際のデータを格納します。

DSASプログラムの拡張子は「SAS」です。
 
オブザベーションと変数 ↑ このページの最初へ
@ SASデータセットのレコード(行)のことを「オブザベーション」といいます。

A SASデータセットのフィールド(列)のことを
「変数」といいます。
 
SASライブラリ ↑ このページの最初へ
SASライブラリはすべてのSASデータセットの保管場所です。

ライブラリの種類
【永久ライブラリ】
 ・「SYSUSER」といううライブラリ参照名で半永続的に使用されます。
  SAS システムはセッション開始時にユーザドキュメント(c:\USERS\DOCUMENTS)の下の
  My SAS Files\9.3 フォルダをSASUSER というライブラリ参照名で自動的に割り当てています。


【一時ライブラリ】
 ・WORK」といううライブラリ参照名でSAS起動時に毎回新規に作成されます。SAS終了時には削除されます。


【ユーザーライブラリ】
 ・ユーザー定義ライブラリ : LIBNAMEステートメントを利用して割り当てます。

  (例)
   LIBNAME mylib '絶対パス';         
/*SASプログラム・データを収容するライブラリ*/
   LIBNAME funclib '絶対パス';        /* ユーザー定義関数を収容するライブラリ*/

SASデータセット名は、「ライブラリ参照名。SASデータセット名」であらわします。
ただし、WORKライブラリの参照名は省略することができます。

【その他のライブラリ】
 MACAUTOS : マクロ自動呼出しライブラリ

【SASプログラムの格納場所】
 保存先の標準フォルダ名は、c:\USERS\ユーザ名\DOCUMNETS\MY SAS Files\9.3です。
 SASプログラムの拡張子は「SAS」です。
 
SASプログラムの構造 ↑ このページの最初へ
SASプログラムは、大きく分けて3つの要素で構成されます。
それぞれが複数あってもよく、どちらかがなくてもかまいません。

  - 
DATA ステップ

  - 
PROC ステップ

  - 
グローバルステートメント

SAS 言語によるプログラミングは、DATA ステップと呼ばれる実行単位と、
PROC ステップと呼ばれる実行単位を組合せて行います。

DATA ステップはデータ検索加工機能を実行するためのものであり、
PROC ステップは基本統計やレポーティングその他の特定機能を実行するためものです。

【SASプログラムの実行】
SASの各ステップは、次のDATA ステップ、またはPROC ステップが現れたときに初めて実行されます。
ただし、RUNステートメントによってそのステップの終了を示し、直ちに実行に移ります。

SASは、コーディングの上位から、DATA ステップ、またはPROC ステップが現れた順番に実行されます。
 
DATAステップ ↑ このページの最初へ
@ DATAステップは、外部ファイルをSASデータセットに変換したり、すでにあるデータセットを加工して、別のSASデータセットを作ります。また、DATAステップは、データをPROCステップに引き渡します。

A
「DATA」で始まり、「RUN」で終了します。

   DATA d1;

   RUN;

B RUNステートメントは、
DATAステップの終了を宣言し、SASステートメントの実行をSASシステムに指示します。

C DATA ステップのループ実行
  DATA ステップは入力するオブザベーションが無ければ1 回だけ実行されます。
  しかし、外部データからの入力(INPUT ステートメント)やSAS データセットからの入力(SET ステートメントなど)が
  あるときは、読み取るデータ行(SAS データセットの読み取りの場合はオブザベーション)が尽きるまで、
  自動的に繰り返し実行されます。
  自動変数 _N_ には、DATAステップの処理回数がセットされます。
 
PROCステップ ↑ このページの最初へ
@ PROCステップは、SASデータセットを使ってグラフやレポートの作成、統計処理を行います。

A
「PROC」で始まり、「RUN」で終了します。

   PROC MEANS DATA = temp;

   RUN;


B RUNステートメントは、PROCステップの終了を宣言し、SASステートメントの実行をSASシステムに指示します。

C PROCステップ(プロシジャー)にはそれぞれの基本的な処理がすべて組み込まれているので、プロシジャーを使用するときは、どのSASデータセットのどの変数をしようするかを指定するだけで、簡単に目的の処理を実行することができます。
 PROCステップは一般に次のような形をしています。

   PROC プロジジャ名 [[DATA=SAS dataset][オプション]];
   ステートメント;
   [ ステートメント;]
   [[ VAR 変数名;] [BY 変数名; ]]
 
プログラミングステートメント ↑ このページの最初へ
RENAME 作成済みのSASデータセットの変数名を変更
文法
RENAME =( 古い名-1 =新しい名-1 <... 古い名-n =新しい名-n>)

PROC DATASETS LIBRARY=ライブラリ参照名 NOLIST;
 MODIFY SASデータセット名;
 RENAME 元の変数名 = 新しい変数名 ..........;
 QUIT;
 
グローバルステートメント ↑ このページの最初へ
@ SASが出力する情報やSASシステムが使用するファイルの取り扱い方法などを指定するステートメントです。

A プログラム内のどの位置にでも指定できます。

B LIBNAMEステートメント、TITLEステートメント、OPTIONSステートメントなどがあります。

【OPTIONSステートメント】
 システムオプションを設定します
 システムオプションの設定内容は,OPTIONSプロシジャで確認できます

 OPTIONS システムオプション指定1 システムオプション指定2 .. ;


【LIBNAMEステートメント】
SAS データセットの読込に用いられるステートメントです。データライブラリにライブラリ名を割り当てます。
SASアプリケーションを起動後1回だけ行えば、SASアプリケーションの終了まで、その指定内容が維持されます。

文法

 
LIBNAME ライブラリ参照名 '物理パス名';
 ※物理パス名は絶対パスを指定することが必要であるが、プログラムの始めにx コマンドを用いて、current directory を指定することで相対パスの指定のみでデータを読込むことができるようになります。
    x’ cd [基準ディレクトリの絶対パス] ’ ;



 
LIBNAME mylib 'C:\mydir';    /*ユーザー定義ライブラリ mylib を割り当てます*/

【FILENAMEステートメント】
外部データの読込に用いられるステートメントです。外部ファイルをファイル参照名として割り当てます。
SASアプリケーションを起動後1回だけ行えば、SASアプリケーションの終了まで、その指定内容が維持されます。

外部ファイルにアクセスする場合、アクセス先を指定する実行ステートメント(INFILE ステートメント(入力)とFILE ステートメント(出力))において、そのファイルの物理パス名を記述する代わりに、あらかじめFILENAME ステートメントでそのファイルをアクセスするためのファイル参照名を定義しておき、INFILE ステートメントやFILE ステートメントでファイル参照名を使用することができます。


文法
 
FILENAME ファイル参照名 '物理パス名';
 ※物理パス名は絶対パスを指定することが必要であるが、プログラムの始めにx コマンドを用いて、current directory を指定することで相対パスの指定のみでデータを読込むことができるようになります。
    x’ cd [基準ディレクトリの絶対パス] ’ ;


  FILENAME IN 'c:\users\ユーザ名\documents\my sas files\9.1';
  DATA sample;
    INFILE IN(sample1.dat);
    INPUT ID name $ sex $ age height weight;
  RUN;
  PROC PRINT DATA=sample;
  RUN;


【TITLEステートメント】
 
出力(OUTPUTウィンドウ)のページごとにタイトルをつけます。10行まで可能です。
 DATAステップやPROCステップの中にも、またそれらの外にでも,どこにでも書けるステートメントです。

  TITLEn " メッセージ・・・・ ";

【RUNステートメント】

 DATAステップの終わりや,PROCステップの終わりを示します。
 
プログラムで使えるデータ【変数】 ↑ このページの最初へ
変数は2種類のデータ型に分けられます。
 文字型変数 : 最小1バイト、最大32767バイトを保存可能

 数値型変数 : 3〜8バイトで確保する。デフォルトは8バイト。
 浮動小数点数として扱うので、有効桁数は16または17桁。

 (日付データは数値型のデータとして記録されます)

【変数の生成:暗黙的定義
新しい変数を作成するには,等号の左辺にその変数をおいて,右辺の式の値を割り当てます

  msg= ' メッセージ・・・・';   
/*文字数は「最初に代入された文字の長さ」によって決定されます*/

【変数の明示的定義】
DATA ステップにおける変数の名前と型を明示的に定義します。

DATA _NULL_;
  LENGTH fname $ 100;   
/*100文字の文字型変数を明示的に定義 1〜32767バイトまで可能 */
                    
/*変数名の後ろに$を付けると文字型となる*/
  LENGTH counter 4;     /*4バイト長の数字型変数を明示的に定義 デフォルトは8バイト */
RUN;

【自動変数】

DATAステップやPROCステップでは,その処理の内容によって,自動的に作成され,値を参照したり設定したりできる変数があり,自動変数と呼びます。

 _N_      オブザベーション処理回数。
         DATAステップにおいて,DATAステップの処理が何回目かを表します。
 _ERROR_  DATAステップにおいて,エラーが発生した(1)か否(0)かを保持します。
         ERRORステートメントで,ユーザが1に設定することもできます。
 _INFILE_   DATAステップにおいて,INPUTステートメントで読み込まれたレコードの
         バッファ内容が保持されます。
 _FILE_    DATAステップにおいて,PUTステートメントで書き出されたレコードの
         バッファ内容が保持されます
 _TYPE_    SUMMARYプロシジャ,MEANSプロシジャなどで,出力SASデータセットの中で
         カテゴリの組み合わせを保持します。
 _FREQ_   SUMMARYプロシジャ,MEANSプロシジャなどで,出力SASデータセットの中で
         カテゴリの度数を保持します。


【ラベル】
変数名に説明的なラベルを割り当てます。

 LABEL 変数名='ラベル・・・'
 
プログラムで使えるデータ【変数】:配列 ↑ このページの最初へ
複数の変数に対して、同じ処理を行う場合にARRAYステートメントを使用して 配列を定義し、DOステートメントを使用します。

文法
 ARRAY 配列名 {要素数} [$] [長さ] [配列要素] [(初期値)];

(例)
 ARRAY x{100} x1-x100;
 ARRAYvar {*} TOKYO OSAKA NAGOYA;

DATA _null_; 
  ARRAY arr {5} $;

  DO I=1 to 5 ;
    arr{I}= 'abc' ;     
/*値を代入*/ 
  END ;
RUN;
 
フォーマット/インフォーマット(FORMAT/INFORMAT) ↑ このページの最初へ
数値型と文字型データは、SAS内部では標準SAS値(SASシステムの内部表現)として扱われますが、外部のデータ表現を標準SAS値に変換したり、標準SAS値をレポート等に出力する場合の編集には多様な表現方法で実現できます。

  
INFORMAT(インフォーマット):外部データ(ファイル、SAS文字型変数)の表現を理解し標準SAS値に変換すること

   informatの詳細SAS文法のサイト

  
FORMAT(フォーマット)標準SAS値を外部データやレポートの出力形式に変換すること

   formatの詳細SAS文法のサイト
 
【INFORMATステートメント】
 INPUTステートメントにより、外部データ形式を標準SAS値にインフォーマットできます。

  INPUT 変数1 informats 変数2 informats 変数2 informats・・・;


 INPUT 変数名1 $           /*データを文字型形式で読み込む*/
       変数名2 comma10.     /*カンマ付き数字を読み込む。変数xの桁数は10桁*/
       変数名3 MMDDYY10.    /*mm/dd/yyyy 形式で読み込みSAS日付値に変換する*/
       変数名n YYMMDD10.;    /*yyyy-mm-dd 形式で読み込みSAS日付値に変換する*/


 
INPUT関数により文字型の変数(データ)を数値型のデータにインフォーマットすることができます。

 INPUT(変数,informats);


  prechar1='50';
  prechar2='01dec2012';
  char1=INPUT(prechar1,best12.);   
/*best12.は適切な数値に変換するフォーマット*/
  char2=input(prechar2,date9.);     
/*date9.はddmmmyyyy形式から数値日付に変換するフォーマット*/

(なし)  数値
$n 文字、n:文字数(省略可)

数値編集形式
comma   コンマ編集
dollar ドル記号「$」付き
yen 円記号「\」付き
  
【FORMATステートメント】
 FORMATステートメントにより、標準SAS値(SASシステムの内部表現)を整形し出力することができます。(汎用ステートメント:複数のプロシージャやデータステップで、同じ名前と形式で使われほぼ同じ機能をもつ)

 FORMAT 変数 formats;

PUTステートメントにより標準SAS値を整形することができます。

 PUT 変数1 編集形式 変数2 編集形式 変数3 編集形式・・・;

PUT関数により標準SAS値を整形することができます。

 PUT(変数,formats);

文字編集形式
$w.  標準文字データを書き出す

数値編集形式
w.d 標準数値データを書き出す
commaw.d   コンマ編集
dollarw.d ドル記号「$」付き
yenw.d 円記号「\」付き

日付編集形式
MMDDYY10.   mm/dd/yyyy形式で編集
YYMMDD10. yyyy-mm-dd形式で編集
YYMMDDS10. yyyy/mm/dd形式で編集
YYMMS10. yyyy/mm形式で編集
date9. ddNOVyyy形式で編集
NENGO. H.nn/mm/dd形式で編集
NLDATE. yyyy年mm月dd日形式で編集
NLDATM. 2008年03月28日 12時34分56秒形式で編集
weekdate30 December 13, 2001 3:32 PM形式で編集
TIME. 12:34:56形式で編集
TIMEAMPM. 12:34:56 PM形式で編集
TIME5. 12:34形式で編集

ユーザー定義フォーマットで編集

 /* ユーザー定義フォーマットをSASカタログに登録 */
 /* オプションにLibrary指定ないので一時ライブラリに作成される */

 PROC FORMAT;
  VALUE  出力形式名 範囲1='文字値1'
                 範囲2='文字値2' ・・・
 RUN;

 /* ユーザー定義フォーマットで印刷 */
 /* 出力形式はSASデータセット作成時にあらかじめ組み込んでおくこともできる */

 PROC PRINT DATA=・・・・・;
  FORMAT 変数名 出力形式名..;
 RUN;

参考
 
/* SASカタログ(データセットに定義された出力形式)を使用せずにデータセットを使用する */
 OPTIONS NOFMTERR;

  /* SASカタログのサーチ順序を指定 */
 OPTIONS FMTSEARCH=(Library1,Library2・・・);


その他の例
 PROC PRINT DATA=work.salary;
  FORMAT salary dollar10.2;     /*少数2桁の&マーク・カンマ付き編集*/
 RUN; 
 
欠損値 ↑ このページの最初へ
数値タイプの欠損値
 欠損値はピリオド1 個(.)で与えます。

文字タイプの欠損値
 ヌル値""またはブランク1 個" "で与えます。

欠損地の判定(MISSING関数)
 IF MISSING(変数名) = . THEN   
/* 欠損値のとき */

新たに定義する文字変数の場合はどちらも長さ1 のブランクの値としてSAS データセットに格納され、既に存在する文字変数の場合は定義された長さのブランク文字列を値としてSAS データセットに格納されます。

長い方の長さに足りない方の文字列はブランクを埋めてから
比較されますので、長さの異なる文字タイプ欠損値の比較結果は等しくなります。

欠損値は統計量を計算する上での有効な値としてカウントせず、別途取り扱われます。

 

↑ このページの最初へ

   ご意見・ご感想をお寄せください。 ‖ お問い合わせはこちらから ‖ このサイトについて           サイトマップ  ‖
  Copyright 2006 - 2013 uTRAM Corp. All Rights Reserved
 
PHARCIS(ヘルスケア最新情報提供)
Facebook for PHARCIS
ClinMark8
アクセスランキング
(2013年5月)

1位 企業ニュース
2位 売上ランキング
3位 メディアニュース
4位 製薬会社
5位 治療薬の最前線
6位 決算短信一覧
7位 データブック
8位 製薬会社研究
9位 イベントカレンダ
10位 パイプラインニュース