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