Sas 简明教程
SAS - Functions
SAS 拥有各种内置函数,有助于分析和处理数据。这些函数用作 DATA 语句的一部分。它们以数据变量作为参数,并返回存储到另一个变量中的结果。根据函数的类型,它所采用的参数数量可能会发生变化。某些函数接受零个参数,而其他一些函数则接受固定数量的变量。以下是 SAS 提供的函数类型列表。
Syntax
在 SAS 中使用函数的常规语法如下所示。
FUNCTIONNAME(argument1, argument2...argumentn)
这里的参数可以是常量、变量、表达式或另一个函数。
Function Categories
根据其用途,SAS 中的函数被归类如下。
-
Mathematical
-
Date and Time
-
Character
-
Truncation
-
Miscellaneous
Mathematical Functions
这些函数用来对变量值施加一些数学运算。
Examples
下面的 SAS 程序演示了几个重要的数学函数的使用。
data Math_functions;
v1=21; v2=42; v3=13; v4=10; v5=29;
/* Get Maximum value */
max_val = MAX(v1,v2,v3,v4,v5);
/* Get Minimum value */
min_val = MIN (v1,v2,v3,v4,v5);
/* Get Median value */
med_val = MEDIAN (v1,v2,v3,v4,v5);
/* Get a random number */
rand_val = RANUNI(0);
/* Get Square root of sum of the values */
SR_val= SQRT(sum(v1,v2,v3,v4,v5));
proc print data = Math_functions noobs;
run;
当运行上述代码时,我们会得到以下输出:
Date and Time Functions
这些函数用来处理日期和时间值。
Examples
下面的 SAS 程序演示了日期和时间函数的使用。
data date_functions;
INPUT @1 date1 date9. @11 date2 date9.;
format date1 date9. date2 date9.;
/* Get the interval between the dates in years*/
Years_ = INTCK('YEAR',date1,date2);
/* Get the interval between the dates in months*/
months_ = INTCK('MONTH',date1,date2);
/* Get the week day from the date*/
weekday_ = WEEKDAY(date1);
/* Get Today's date in SAS date format */
today_ = TODAY();
/* Get current time in SAS time format */
time_ = time();
DATALINES;
21OCT2000 16AUG1998
01MAR2009 11JUL2012
;
proc print data = date_functions noobs;
run;
当运行上述代码时,我们会得到以下输出:
Character Functions
这些函数用来处理字符或文本值。
Examples
下面的 SAS 程序演示了字符函数的使用。
data character_functions;
/* Convert the string into lower case */
lowcse_ = LOWCASE('HELLO');
/* Convert the string into upper case */
upcase_ = UPCASE('hello');
/* Reverse the string */
reverse_ = REVERSE('Hello');
/* Return the nth word */
nth_letter_ = SCAN('Learn SAS Now',2);
run;
proc print data = character_functions noobs;
run;
当运行上述代码时,我们会得到以下输出:
Truncation Functions
这些函数用来截断数值。
Examples
下面的 SAS 程序演示了截断函数的使用。
data trunc_functions;
/* Nearest greatest integer */
ceil_ = CEIL(11.85);
/* Nearest greatest integer */
floor_ = FLOOR(11.85);
/* Integer portion of a number */
int_ = INT(32.41);
/* Round off to nearest value */
round_ = ROUND(5621.78);
run;
proc print data = trunc_functions noobs;
run;
当运行上述代码时,我们会得到以下输出: