Eric's color bar icon

under construction icon

このページは、平成11年6月8日に開設した。
このページは、令和2年5月8日に一部更新した。


 第2.2節 data ステップの3種の形式

 data ステップには、どこにデータが存在するかによって次の3種の形式に分けられる:

  1. 外部ファイルからデータを入力する場合
  2. sasプログラムの中に組み込んだデータから sas/ds を作成する場合
  3. 既存の sas/ds から別の sas/ds を作成する場合

 これらについて順に説明すると、次のようになる。

  1. 外部ファイルからデータを入力する場合

    data sas/ds 名;
      infile '外部ファイル名';
      input 変数名 書式 変数名 書式 ...;
      その他の sas 文;
    run;

  2. sas プログラムの中に組み込んだデータから sas/ds を作成する場合

    data sas/ds 名;
      input 変数名 書式 変数名 書式 ...;
      その他の sas 文;
    cards;
    データ行
    ;

  3. 既存の sas/ds から、別の sas/ds を作成する場合

    data sas/ds 名;   set(または merge または update)sas/ds 名;
      その他の sas 文;
    run;

 data ステップで用いられる文には、この節だけでも既に data 文、infile 文、 input 文、set 文などが出てきたが、その他にもたくさん用意されている。

 最初の sas プログラムの例は、上述の3種の形式の中の第1の形式を用いた 例である。この場合、ファイル名からわかるように、パソコンで sas を実行する 場合であり、さらにデータはフロッピーに保存されているものを呼び出すことに なる:

sas プログラムの例1

*------------------------------------------*
|                                  June 22, 1999
| sas program--sasfile.exam4-
|   example 4 of sasprograms for making a sas permanent file.
| It is a set of miller lyer illusion data by a completely rando-
| mized design with four levels (CR-4) for 34 samples. In this
| case it is also an unbalanced design.
|
| file name: a:¥sasprog¥sasfile.ex4
|
*-------------------------------------------*;
filename cr4emp 'b:¥p70001av';
libname sasfile 'a:¥sasset';
options pagesize=60;
data sasfile.cr4mill;
  infile cr4emp;
  input noss 2. +1 level 1. +1 pse 2.;
  label noss='sample number'
      level='level of angle of inward arrow'
      pse='point of subjective eqality in cm';
run;
libname library 'a:¥sasset¥format';
proc format library=library;
  value lvlfmt 1='15 degree' 2='22.5 degree' 3='30 degree'
           4='60 degree';
run;
proc print data=sasfile.cr4mill n;
 title 'miller lyer empirical data by CR-4 for 34 subjects';
run;

 次の sas プログラムは、上述の data ステップの3種の形式の中の第2の形式 を用いた例を示す。ただし、ここでの sas/ds(sas データセット)は、前節で述べた 永久 sas データセットである。なぜならば、データセット名はピリオドで挟まれた 2レベルで定義しているから:

sas プログラムの例2

*----------------------------------------*
|                               June 8, 1999
| sas program --perm_ex1.sas --                  
|  example 1 of sas programs for making sas permanent file
|                             
| file name: $HOME/sasprog/perm_ex1.sas         
|                            
*----------------------------------------*;
libname sasset '$HOME/permfile';
data sasset.grad;
 input noss 2. gradth 3. (achiev1-achiev3) (3.);
 label noss='sample number'
    gradth='mark on the graduation thesis'
    achiev1='average mark in grade 1'
    achiev2='average mark in grade 2'
    achiev3='average mark in grade 3';
cards;
 1 85 65 73 83
 2 84 68 80 87
 3 84 77 77 83
 4 84 78 72 82
 5 84 72 76 80
 6 80 65 59 79
 7 80 57 66 78
 8 78 64 62 72
 9 75 68 67 77
10 75 68 68 70
11 70 61 60 70
12 68 61 58 66
13 65 56 59 62
;
options pagesize=60;
proc print data=sasset.grad n;
 title 'data on the determinants of graduation thesis marks';
run;

 これに対して、つぎの sas プログラムの例は、やはり第2の形式を用いた例では あるが、sas/ds 名は、1レベルで定義されていることに注意したい。この場合、 sas/ds は一時 sas ファイルとみなされ、sas セッションが終了すると消えてしま うことに注意せよ:

sas プログラムの例3

*------------------------------------------*
|                                   March 20, 1998
| sas program--glm_ex1.sas --
|    example 1 of sasprograms for glm procedure, especially
| a type of the randomized block design with repeated measures.
| The data is that of Table 6.2-1 (p.244) of Kirk (1982).
|
| file name: $HOME/sasprog/glm_ex1.sas
|
*------------------------------------------*;
data Kirk244;
 input no 1. (a1-a4) (3.);
 label no='sample number'
     a1='level 1 of treatment A'
     a2='level 2 of treatment A'
     a3='level 3 of treatment A'
     a4='level 4 of treatment A';
cards;
1  3  4  7  7
2  6  5  8  8
3  3  4  7  9
4  3  3  6  8
5  1  2  5 10
6  2  3  6 10
7  2  4  5  9
8  2  3  6 11
;
options pagesize=60;
 title 'the sas glm procedure for repeated measures RB-I design';
proc glm data=Kirk244;
 model a1-a4= / nouni;
 repeated treat 4 contrast(1) / summary printe printm;
run;

Eric's color bar icon