知方号

知方号

SAS 函数

SAS 函数

SAS函数是编程语言的一个组件,可接受参数、执行计算或进行其他操作并返回值。返回值是字符型或数值型的结果,可用于赋值语句或 表达式中。SAS包含很多函数,也可以自定义函数。在BASE SAS软件 中,SAS函数可用于DATA步编程、WHERE表达式、宏语言语句、 PROC REPORT和结构化查询语言SQL(Structured Query Language)。

SAS函数的形式如下:

函数名(参数1 )函数名(OF 变量列表)函数名(参数 | OF 变量列表 | OF数组名{*} )

其中:

·函数名用于给出函数名称。·参数可以是变量名、常量或任何SAS表达式。多个参数间使用逗号(,)分隔。·变量列表可以是任何形式的变量列表。多个列表之间使用空格分 隔。例如sum(of x y z)、sum(of x1-x10)、sum(x,of x1-x5y1- y5)、sum(x,of x1-x5,of y1-y5)。最后两种表示方式具有同等效果。·数组名{*}指在当前DATA步中已经定义的数组。数值函数

字符操作函数

  数值与字符转换函数1.PUT函数

PUT函数使用指定的格式返回值,可用于将数字值转换成字符值。 其基本形式如下:

PUT(源, 格式)

其中,源为要进行重新格式化的常量、变量或表达式,可以是字符型或数值型。格式为要应用在源上的SAS格式。PUT函数可用于将数字 根据格式转换为字符或将字符值转换为其他字符。默认情况下,如果源 是数值型,结果字符串会向右对齐,如果源是字符型,则结果字符串会 向左对齐。也可以在格式中添加对齐标识-L、-C、-R分别表示左对齐、 居中或右对齐,改变默认对齐方式。格式必须与源的类型一致。也就是说,如果源是字符,格式名必须以$符号开始;如果源是数字,格式则不能以$开始。PUT函数不影响数据集中的变量格式或属性。

子公司员工信息保存在saslib.employee2中,使用PUT函数对 Emp_ID的数值进行转换,并创建新的字符型变量New_Emp_ID,同 时,使用DROP语句将原始变量Emp_ID删除,之后再使用RENAME语 句将New_Emp_ID改名为Emp_ID。这样,所生成数据集中包含的变量 名就会保持不变。该过程很容易理解,这里不再给出数据示例进行讲 解。相关代码如下:

data saslib.employee2;set saslib.employee2; New_Emp_ID=put(Emp_ID, best10.); drop Emp_ID;rename New_Emp_ID=Emp_ID;run;2.INPUT函数

INPUT函数返回当SAS使用指定输入格式转换SAS值之后的结果。 其基本形式如下:

INPUT(源, 输入格式)

其中,源为要应用输入格式的字符常量、字符变量或字符表达式。 格式为要应用在源上的SAS输入格式。

INPUT函数会将源的值使用指定的输入格式进行转换。INPUT函数 可用于将字符值转换为数字值或其他字符值。输入格式指定了结果是数 值型还是字符型。INPUT函数也不影响数据集中的变量输入格式或属性。

公司需要对员工入职日期进行排序,首先要将日期值(Date)转换 为数字。这里使用INPUT函数,并使用输入格式date9.将字符格式的日 期值(例如“01JAN2012”)转换为该日期对应的数字进行存储。代码如 下:

data saslib.sales;set saslib.sales; Num_Date=input(Date, date9.);drop Date;rename Num_Date=Date;run;proc print data=saslib.sales noobs;run;proc contents data=saslib.sales;run;与日期时间相关的函数

SAS提供日期(date)、时间(time)和日期时间(datetime)函数从日期、时间和日期时间值中得到年份、月份、日、小时、分钟、秒等 信息,它们也可以将这些信息组成SAS的日期、时间和日期时间值。表3.13给出了SAS中常用的与日期、时间相关的函数。除此之外,SAS还 提供对日期的间隔进行操作的函数,详细情况请参考SAS帮助文档。

将公司员工入职日期中的年份、月份和日分别提取出来, 建立新的变量Year、Month和Day。

代码如下:

data work.employee_ymd;set saslib.employee;Year = year(Entry_Date); Month = month(Entry_Date); Day = day(Entry_Date);run;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。