SASのif文のサンプルです。条件で処理を分岐する時に使用します。(確認環境:SAS9.4)
目次
if文 | if文とは / if文のサンプル / ネスト構造 if文の中にif文 |
if文で使用する比較演算子 | |
論理演算子 | 論理積(&,and) AかつB |
論理和(|,or) AまたはB | |
論理否定(^,not) Aではない |
if文とは
if 条件 then 処理 |
/* else ifとelseを書く場合 */ if 条件 then 処理 else if 条件 then 処理 else 処理 |
- 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
- 条件が合致することをtrue(真)ともいいます。
- 条件が合致しない場合、配下の処理は実行されず、その下(else if/else/if文終了)に進みます。
- 条件が合致しないことをfalse(偽)ともいいます。
- else ifは、1つ以上記述できます。省略可能です。
- elseの処理は、どの条件も合致しなかったときに実行されます。elseは1つのみ記述できます。省略可能です。
if文のサンプル
DATA _NULL_;
a = 1;
if a = 0 then
put "0";
else if a = 1 then
put "1"; /* 1が表示される */
else
put "other";
run;
1行目の「_null_」は、データステップのみ実行する場合に使用します。
2行目は、変数aに値をセットしています。
4行目から11行目までがif文です。
7行目は、条件が合致する(aの値は1である)のでその配下の処理が実行されます。
8行目の処理が実行されif文を抜けます(終了します)。
ネスト構造 if文の中にif文
DATA _NULL_;
a = 1;
b = 1;
if a = 1 then
if b = 1 then
put "1"; /* 1が表示される */
run;
6行目は、if文の中にif文を記述しています。ネストの構造です。入れ子ともいいます。
if文で使用する比較演算子
以下は主な比較演算子です。
比較演算子は、2つの値を比べて条件を満たしていればtrue,そうでない場合はfalseを返します。
比較演算子 | 別名 | 説明 |
---|---|---|
a = b | eq | aとbの値は等しい(equal) |
a ^= b | ne | aとbの値は等しくない(not equal) |
a > b | gt | aはbより大きい(greater than) |
a >= b | ge | aはbより大きい または 等しい(greater than or eaual) |
a < b | lt | aはbより小さい(less than) |
a <= b | le | aはbより小さい または 等しい(less than or equal) |
以下はSASの比較演算子のリンクです。
https://documentation.sas.com/?cdcId=pgmsascdc&cdcVersion=9.4_3.5&docsetId=lrcon&docsetTarget=p00iah2thp63bmn1lt20esag14lh.htm&locale=ja#n10lfrm906gpv7n1t7fue0g1ayqz
論理積(&,and) AかつB
if 左の条件 & 右の条件 |
if 左の条件 and 右の条件 |
左と右の条件が両方ともtrueの場合、trueになります。それ以外はfalseです。
DATA _NULL_;
a = 6;
if a = 6 & a < 10 then
put "true"; /* trueが出力される */
if a = 6 and a < 10 then
put "true"; /* trueが出力される */
run;
4,7行目は、左と右の条件が共にtrueなので、trueになります。
論理和(|,or) AまたはB
if 左の条件 | 右の条件 |
if 左の条件 or 右の条件 |
左の条件または右の条件のどちらかがtrueの場合、trueになります。
DATA _NULL_;
a = 1;
if a = 0 | a < 10 then
put "true"; /* trueが出力される */
if a = 0 or a < 10 then
put "true"; /* trueが出力される */
run;
4,7行目は、左の条件はfalseですが右の条件がtrueなのでtrueになります。
論理否定(^,not) Aではない
if ^(条件) |
if not(条件) |
条件がfalseの場合にtrueになります。
条件がtrueの場合にfalseになります。
DATA _NULL_;
a = 1;
if ^(a = 2) then
put "true"; /* trueが出力される */
if not(a = 1) then
put "true";
else
put "false"; /* falseが出力される */
run;
4行目は値の比較でfalseになり、それを^で否定するのでtrueになります。
7行目は値の比較でtrueになり、それをnotで否定するのでfalseになります。
以下はSASの論理演算子のリンクです。
https://documentation.sas.com/?cdcId=pgmsascdc&cdcVersion=9.4_3.5&docsetId=lrcon&docsetTarget=p00iah2thp63bmn1lt20esag14lh.htm&locale=ja#n19ojrq5dkxpd6n14egp2a3oz0up
関連の記事