SAS if文のサンプル

SASのif文のサンプルです。

確認環境
・SAS 9.4

目次

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 "1つめ";
	
else if a = 1 then
	put "2つめ";   /* 2つめが表示される */
	
else
	put "3つめ";
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 "OK"; /* OKが出力される */
		
if a = 6 and a < 10 then
	put "OK"; /* OKが出力される */
run;

4,7行目は、左と右の条件が共にtrueなので、trueになります。

論理演算子の論理和(|,or)  AまたはB

if 左の条件 | 右の条件
if 左の条件 or 右の条件

左の条件または右の条件のどちらかがtrueの場合、trueになります。

DATA _NULL_;
a = 1;

if a = 0 | a < 10 then
	put "OK"; /* OKが出力される */
		
if a = 0 or a < 10 then
	put "OK"; /* OKが出力される */
run;

4,7行目は、左の条件はfalseですが右の条件がtrueなのでtrueになります。

論理演算子の論理否定(^,not)  Aではない

if ^(条件) 
if not(条件) 

条件がfalseの場合にtrueになります。
条件がtrueの場合にfalseになります。

DATA _NULL_;
a = 1;

if ^(a = 2) then
	put "OK"; /* OKが出力される */
		
if not(a = 1) then
	put "OK";
else
	put "NG"; /* NGが出力される */
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)

△上に戻る