OL、SEになる!おぼえがき★

関西人OL。SEの技術力獲得のためのおぼえがきまとめです!

SAS 基礎 データの読み込み、書き出し infile file input cards

 

データセットを作成したり(読み込んだり)、

外部ファイル等に書き出すstatementについてまとめていきます。

 

◎データセットをstatement内で作成する場合

データセットを作成したい場合のキーワードは、"infile", "cards"です。

直接作りたいデータセットの型やフォーマット、データの値をstatementの中へ記載していきます。

 

例)

data test ;           

  infile cards ;               /*cardsを使うときは省略可能*/

  input Num $ Name $ Age ;     /*変数名を指定(後ろに「$」をつけると文字型、指定しない場合は数値)*/    

  cards ;                      /*「cards」の後ろからセミコロンまでをデータとして読み込む、改行で次の行*/   

010 Keiko 34

020 Tsuyoshi 22

021 Tatsuo 23

;

/* 空白区切りでデータを指定 */

run ;

 

f:id:omihosam:20161218185316p:plain

 

 例えば、上のような記載方法で、変数名、型、そしてデータの値を記載します。

これを実行するとアウトプットウィンドウには以下が出力されます。

f:id:omihosam:20161218183038p:plain

 

とこのように簡単に作りたいSASのデータセットが作れます♪

 inputの後ろに、作成したい列の変数名、そして文字型の場合は、"$"をつけ、数値の場合は特に記載せず、作成列順に記載していきます。

そしてその後、"cards"のうしろに実際にいれたいデータをスペース区切りで記載します。

スペースが入ると違う列のデータと認識されてしまうので注意が必要です!

 

というのも区切り文字がデフォルトでスペースだからです。
スペースを区切り文字としたい場合は、         

infile cards dlm = ',' ;  

と記載すればカンマなど他記号を区切り文字として
スペース区切りのデータを作成することができます。

 

また改行を次の行とみなすため、改行した分、行が生成されるため注意が必要です。

(空白行があるとそれも1行とみなされ空白行のデータが作成されます。。) 

 

次に、外部ファイルから取り込む場合です。

 

以下のような中身の外部ファイル(sample.txt)を用意します。

f:id:omihosam:20161218184905p:plain

こちらを以下のように記載するとテキストファイルの中身を取り込むことができます!!

外部ファイルのパスと読み込む変数を以下のように指定して実行。。

data test2 ;           

  infile "c:\sample.txt" ;         /*外部ファイルのパスを指定*/    

  input Num $ Name $ Age ;         /*読み込む変数名を指定*/        

run ;

 

 

最後に、◎データセットを外部ファイルに出力する場合です。

出力したいデータセット名、外部ファイルのパスを指定します。

出力する際は、入力のときと違い、違うワードである"file"と"put"を利用します。

data _null_ ;                  /*データセットを作らないように"_null_"を指定*/      

  set test ;                     /*出力したいデータセット名*/    

  file "c\sample2.txt" ;       /*出力ファイル名*/            

  put Num $ Name $ Age ;             

run ;

 

上のようなステートメントを実行すると、出力された外部ファイルsample2.txt は以下のようになります。

f:id:omihosam:20161218185003p:plain

 

◎その他オプションのご紹介 

・データを読み込む際に、フォーマットやlengthを指定することができます!その場合は、"informat"というオプションを利用します。

例)

data test ;            

  infile cards ;        

  informat Num $20. ;        

  informat Age 3. ;        

  put Num $ Name $ Age             

  cards ;                        

010 Keiko 34

020 Tsuyoshi 22

021 Tatsuo 23

;

run ;

 

と簡単に基本的なことをまとめてみました。

テキストだけでなくexcelやrtfへも出力は可能ですが、それはまた今度記載しようと思います!!

 

※実行にはSAS University Edditionを利用

くわしくは↓

prglife.hateblo.jp