IFN Function


Returns a numeric value of an expression based on whether the expression is true, false, or missing

Category: Character

Syntax

IFN ( logical-expression , value-returned-when-true , value-returned-when-false

  • <, value-returned-when-missing >)

Arguments

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.

Details

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.

Comparisons

The IFN function is similar to the IFC function, except that IFN returns a numeric value whereas IFC returns a character value.

Examples

Example 1: Calculating Sales Commission

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; 
Output 4.27: Output from a WHERE Statement
start example
 Commission for Total Sales > 1000        1         Sales       Total  Obs    Person      Sales    commission  1      Michaels    25000       1250  2      Gupta       10300        515 
end example
 

See Also

Functions:

  • 'IFC Function' on page 584




SAS 9.1 Language Reference Dictionary, Volumes 1, 2 and 3
SAS 9.1 Language Reference Dictionary, Volumes 1, 2 and 3
ISBN: N/A
EAN: N/A
Year: 2004
Pages: 704

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net