SAS if文のサンプル

SASのif文のサンプルです。条件で処理を分岐する時に使用します。

確認環境
・SAS 9.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)に進みます。
  • 条件が合致しないことをfalse(偽)ともいいます。
  • else ifは、1つ以上記述できます。省略可能です。
  • elseは、1つのみ記述できます。省略可能です。elseの処理は、どの条件も合致しなかったときに実行されます。

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

関連の記事

SAS ループ文のサンプル(do)

△上に戻る