Study SAS

統計解析ソフトウェアSASについて学習したことのまとめやSAS認定試験対策など

SAS Base Programmer 練習問題16

DATAステップでデータエラーとなった場合の挙動で正しいものは次のどれか

A. エラーとなったところでDataステップが中断し、SASデータセットは作成されない
B. エラー内容のnoteがSASログに出力され、Dataステップの実行は継続される
C. 不正なデータレコードが別のSASファイルに保存されたという内容のnoteが出力される
D. エラーとなったところでDataステップが中断し、そこまでに処理したオブザベーションを含むデータセットが作成される

出典はこちら


答え: B (要反転)

エラーのタイプによって継続して実行を行う場合と、中断される場合とに分かれる。データエラーは前者のタイプ。
例えば以下のようなDataステップはデータエラーとなる。

data temp;
    input num;
    datalines;
1
2
3
4
a
5
6
7
8
;
run;

数値であるべきデータにaが入っている。
これを実行すると

NOTE: numに対して、無効なデータが行32カラム1-1にあります。

のようなnoteがSASログに出力されるが

Obs num
1 1
2 2
3 3
4 4
5 .
6 5
7 6
8 7
9 8

以降のオブザベーションは継続して実行され、データセットが作成される。

一方、以下のようなシンタックスエラーではDataステップの実行が中断される

data temp;
    input num;
    format num = 2.;
    datalines;
1
2
3
4
a
5
6
7
8
;
run;

formatステートメントに不要な'='が入っている。
これを実行すると

NOTE: エラーが発生したため、このステップの処理を中止しました。
WARNING: データセットWORK.TEMPは未完成です。このステップは、
         0オブザベーション、1変数で停止しました。

処理を中止したため、データセットが作成されない旨のnoteがSASログに出力されている。