Returns a numeric value of an expression based on whether the expression is true, false, or missing
Category: Character
IFN ( logical-expression , value-returned-when-true , value-returned-when-false
<, value-returned-when-missing >)
logical-expression
specifies a numeric expression.
value-returned-when-true
specifies a numeric expression that is returned when the value of logical-expression is true.
value-returned-when-false
specifies a numeric expression that is returned when the value of logical-expression is false.
value-returned-when-missing
specifies a numeric expression that is returned when the value of logical-expression is missing.
The IFN function uses conditional logic that enables you to select among several different values based on the value of a logical expression.
IFN evaluates the first argument, then logical-expression . If logical-expression is true (that is, not zero and not missing), then IFN returns the value in the second argument. If logical-expression is a missing value, and you have a fourth argument, then IFN returns the value in the fourth argument. If logical-expression is false, IFN returns the value in the third argument.
The IFN function, an IF/THEN/ELSE construct, or a WHERE statement can produce the same results (see 'Examples' on page 587). However, the IFN function is useful in DATA step expressions when it is not convenient or possible to use an IF/THEN/ELSE construct or a WHERE statement.
The IFN function is similar to the IFC function, except that IFN returns a numeric value whereas IFC returns a character value.
The following examples show how to calculate sales commission using the IFN function, an IF/THEN/ELSE construct, and a WHERE statement. In each of the examples, the commission that is calculated is the same.
Calculating Commission Using the IFN Function In the following example, IFN evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales.
data _null_; input TotalSales; commission=ifn(TotalSales > 10000, TotalSales*.05, TotalSales*.02); put commission=; datalines; 25000 10000 500 10300 ; run;
SAS writes the following output to the log:
commission=1250 commission=200 commission=10 commission=515
Calculating Commission Using an IF/THEN/ELSE Construct In the following example, an IF/THEN/ELSE construct evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales.
data _null_; input TotalSales; if TotalSales > 10000 then commission = .05 * TotalSales; else commission = .02 * TotalSales; put commission=; datalines; 25000 10000 500 10300 ; run;
SAS writes the following output to the log:
commission=1250 commission=200 commission=10 commission=515
Calculating Commission Using a WHERE Statement In the following example, a WHERE statement evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales. The output shows only those salespeople whose total sales exceed $10,000.
options pageno=1 nodate ls=80 ps=64; data sales; input SalesPerson $ TotalSales; datalines; Michaels 25000 Janowski 10000 Chen 500 Gupta 10300 ; data commission; set sales; where TotalSales > 10000; commission = TotalSales * .05; run; proc print data=commission; title 'Commission for Total Sales > 1000'; run;
Commission for Total Sales > 1000 1 Sales Total Obs Person Sales commission 1 Michaels 25000 1250 2 Gupta 10300 515
Functions:
'IFC Function' on page 584