【SAS】IFNとIFC

条件によって処理を変えたいとき

普通に考えればif文やcase文を使う。
たとえば、販売金額(sales)10万円以上の場合は、手数料(commission)が2%で10万円未満では手数料が5%みたいな計算をしたいとき、dataステップでは

if sales >= 100000 then commission = sales * 0.02;
else commission = sales * 0.05;

SQLでは

case when (sales >= 100000) then sales * 0.02 else sales * 0.05 end as commission

IFN関数やIFC関数をつかってみる

2つにしか条件分岐しない場合は、IFN関数やIFC関数が使えないか検討して見た方が良い。
先ほどの例をIFN関数で書き直すと

commission = IFN(sales >= 100000, sales * 0.02, sales * 0.05);

となり、結構シンプルに書ける。
IFN関数は条件に合わせて数値を返すときに、IFC関数は文字を返すときに使う。
使い方がシンプルで
IFN(条件, Trueの時に返す, Falseの時に返す, missingの時に返す)
という感じ。missingの時に返すものは無くても良い。