Study SAS

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

SAS Base Programmer 練習問題6

WORK.LEVELSデータセットのPRINTプロシジャ出力は以下であるとする

Obs name level
1 Frank 1
2 Joan 2
3 Sui 2
4 Jose 3
5 Burt 4
6 Kelly .
7 Juan 1
data work.expertise;
    set work.levels;
    if level = . then
        expertise = 'Unknown';
    else if level = 1 then
        expertise = 'Low';
    else if level = 2 or 3 then
        expertise = 'Medium';
    else
        expertise = 'High';
run;

このSASプログラムサブミットしたときWORK.EXPERTISEデータセットに含まれる変数はどれか

A. Low, Medium, High
B. Low, Medium, Unknown
C. Low, Medium, High, Unknown
D. Low, Medium, High, Unknown, ' ' (文字データの欠損値)

出典はこちら


答え: B (要反転)

実行結果は以下のようになる

Obs name level expertise
1 Frank 1 Low
2 Joan 2 Medium
3 Sui 2 Medium
4 Jose 3 Medium
5 Burt 4 Medium
6 Kelly . Unknown
7 Juan 1 Low
    else if level = 2 or 3 then

このifの評価が常に真となる(if 3 thenを評価している)ため、expertiseの値がHeighとなることはない。
levelの値に応じてLow, Medium, Highを割り当てるといった、本来意図した動作をさせるには、この行を次のように修正する

    else if level = 2 or level = 3 then