msgbartop
List for SAS fans and programmer
msgbarbottom

03 9月 12 SAS函数精选三 翻译


系列:  SAS函数精选一           SAS函数精选二

 

CATS和CATX函数

         这两个函数用于连接字符串。函数CATS首先去掉每个要连接字符串的首尾空格。CATX也会去掉首尾的空格,并且还会在每个字符串之间插入分隔符(CATX函数的第一个语句)。

         这些函数需要非常注意的点是结果的存储长度,如果没有预先定义,默认是长度200。而你使用连接符号(||或!!)只是这些连接字符串长度之和。

         如果你有一系列的变量如Base1-Basen,你可以在列表前使用关键词‘OF’。最后,列表中的值可以是字母,也可以说数字。如果一些语句是数字,SAS将会把数字当作字母对待,并且不会在SAS log里面出现转换信息。

         下面的例子示意这些函数字母操作去掉空格,函数CATX字母插入分隔符。

程序17

1
2
3
4
5
6
7
8
data join_up;
length Cats $ 6 Catx $ 13;
String1 = 'ABC ';
String2 = ' XYZ ';
String3 = '12345';
Cats = cats(String1,string2);
Catx = catx('-',of String1-String3);
run;

图17:程序17的输出结果

Cats         Catx

ABCXYZ    ABC-XYZ-12345

COUNT和COUNTC函数

         SAS有两个计数函数,COUNT和COUNTC。它们之间的区别就像FIND和FINDC。COUNT计算一个子字符串在一个字符串中出现的次数,COUNTC计算单独字母在字符串中出现的次数。这些函数的语句和FIND和FINDC一样。第一个语句是你想要搜索的字符串,第二个语句是子字符串(COUNT)或一列字母(COUNTC)。最后你可以在第三个语句中使用可选的修饰符,其中修饰符‘i’(忽略大小写)最有用了。 (更多…)

原创文章: ”SAS函数精选三 翻译“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/284


03 9月 12 SAS函数精选二 翻译


系列:  SAS函数精选一              SAS函数精选三 

 

SUBSTR函数

         如果你需要从一个字符串中提取一个子字符串,你需要SUBSTR函数。需要提醒一下的是,有个函数SUBSTRN非常像SUBSTR,就是多了一些额外的特征。我不知道这些特征是否经常被需要,因此本文选择描述稍微简单的函数SUBSTR。

         此函数的第一个语句是输入字符串,第二个语句是你想要提取字符串的开始位置,第三个是,可选语句,设定子字符串的长度。如果你忽略第三个语句,函数将提取输入字符串中最后一个非空字母,也就是说,它忽略输入字符串的后面的空格(这个特征非常有用)。

         在我们继续例子之前,理解默认长度这个概念非常重要。比如说,在下一个程序中,如果你没有写LENGTH语句,SAS将仍然需要设置一个长度给State。对于这个函数,默认长度等于函数第一个语句的长度。你不能使得从字符串提取的子字符串长于字符串本身。很多其他的SAS字符函数默认长度为200。需要保证的是,具有这个功能的函数需要在DATA步中包含LENGTH语句。最好是包含LENGTH语句,即使是不需要,这样是没有风险的。http://saslist.net/

         下面是一个使用SUBSTR函数的简单例子。

程序9

1
2
3
4
5
6
7
8
9
data pieces_parts;
input Id $9.;
length State $ 2;
State = substr(Id,3,2);
Num = input(substr(Id,5),4.);
datalines;
XYNY123
XYNJ1234
;

         这里是你想要提取州号码(从位置3开始,一共两位),ID的数字部分从位置5开始。注意你忽略数值提取中的第三个语句。这个非常有用,因为有的数字是3个字符长,有的是4个字符长。这个例子中,你使用INPUT函数将字符转化为数值。

         图9,程序9的输出结果

    Id       State     Num

 XYNY123      NY       123

 XYNJ1234     NJ      1234

使用等号在左边的SUBSTR函数

         在早期学SAS的时候,等号在左边的SUBSTR函数被称为是SUBSTR假函数。据我所知,这是SAS唯一等号在左边的函数。下面是它的用途:

         允许你用新的字符来替代已有字符串中的字符。这个听起来挺复杂的,但是你通过下面的程序看到,这实际上是很直接的方式。下面的程序使用SUBSTR函数(等号在左边的)来遮住帐号的前五个字符。 (更多…)

原创文章: ”SAS函数精选二 翻译“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/283


01 9月 12 SAS函数精选一 翻译


下面是Dr. Ron Cody的一篇关于SAS函数的文章,非常好的函数介绍文章。曾经在2009年SAS公司(上海)举办的一次SASor聚会上,我做了一次关于SAS函数的presentation分享,见 ppt正文,我发现竟然有部分内容重合。 我个人非常喜欢SAS系统提供的函数,建议老手新手都可以读读下面的文章,祝都有所获!

最有用的一些SAS函数
A Survey of Some of the Most Useful SAS Functions

by Dr. Ron Cody   翻译 sxlion

摘要:

     SAS函数为你的数据步(DATA step)编程提供惊人的能力。有一部分SAS函数是精华,能够帮助你节省大量不必要的代码。这篇文章内容覆盖其中最有用的一些SAS函数。有些函数可能对你来说有些陌生,然后她们将会改变你的编程方式,并助你轻松完成日常的编程任务。

 介绍:

         本文写到的大部分函数都与字符数据有关,这些函数的功能包括搜索字符串,查找和替代字符串,或连接字符串,还有些函数能测量两个字符串之间的距离(这对于“模糊”配对非常有用)。一些最新和最叹为观止的函数还以Call例程的形式存在。你知道怎么用函数在同一个观察值进行排序吗?你知道你不仅可以定位一列变量中极大或极小值,而且可以定位到第二位、第三位最大或最小的值? 如果你觉得上面的介绍能够吸引你的兴趣,请继续往下读! http://saslist.net

SAS是怎样存储字符值的?

 在我们讨论字符函数之前,了解SAS怎样存储函数值非常重要。为了帮助讨论,你首先需要理解两个重要的字符函数:LENGTHN和 LENGTHC。

LENGTHN和 LENGTHC

        这两个函数返回字符值的长度信息,其中LENGTHN返回未计算后缀空格语句的长度。LENGTHC返回字符变量的存储长度。你也许对旧的SAS函数LENGTH比较熟悉,大部分情况下函数LENGTH和LENGTHC返回同样的值。有一个例外的是,当语句里是缺失值时,LENGTH函数返回的是1,而LENGTHN返回0。有一些新函数看起来是在旧函数后面加个字母“n”,这里的“n”代表“空字符串”(“null string”)。在SAS9中,长度为0的字符串概念被引进。在大多数情况下,如果你看到一个你似曾相识的新函数(比如说新函数TRIMN, (更多…)

原创文章: ”SAS函数精选一 翻译“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/282


22 11月 10 最全的SAS9.2函数列表二


第二类 函数  windows环境下函数;

CALL SOUND Generates a sound with a specific frequency and duration.
MCIPISLP Causes SAS to wait for a piece of multimedia equipment to become active.
MCIPISTR Submits an MCI string command to a piece of multimedia equipment.
MODULE Calls a specific routine or module that resides in an external dynamic link library (DLL).
WAKEUP Specifies the time a SAS DATA step begins execution.

第三类,OpenVMS虚拟内存环境下函数;

ASCEBC Converts an input character string from ASCII to EBCDIC.
CALL FINDEND Releases resources that are associated with a directory search.
DELETE Deletes a file.
EBCASC Converts an input character string from EBCDIC to ASCII.
FILEATTR Returns the attribute information for a specified file.
FINDFILE Searches a directory for a file.
GETDVI Returns a specified item of information from a device.
GETJPI Retrieves job-process informations.
GETLOG Returns information about a DCL logical name.
GETMSG Translates an OpenVMS error code into text.
GETQUOTA Retrieves disk quota information.
GETSYM Returns the value of a DCL symbol.
GETTERM Returns the characteristics of your terminal device.
MODULE Calls a specific routine or module that resides in a sharable image.
NODENAME Returlns the name of the current node.
PUTLOG Creates an OpenVMS logical-name in your process-level logical name table.
PUTSYM Creates a DCL symbol in the parent SAS process.
SETTERM Modifies a characteristic of your terminal device.
TERMIN Allows simple input from SYS$INPUT.
TERMOUT Allows simple output to SYS$OUTPUT.
TTCLOSE Closes a channel that was previously assigned by TTOPEN.
TTCONTRL Modifies the characteristics of a channel that was previously assigned by TTOPEN.
TTOPEN Assigns an I/O channel to a terminal.
TTREAD Reads characters from the channel assigned by TTOPEN.
TTWRITE Writes characters to the channel assigned by TTOPEN.
VMS Spawns a subprocess and executes a DCL command.

第四类,z/OS操作环境下函数,

CALL TSO Issues a TSO command or invokes a CLIST or a REXX exec during a SAS session.
CALL WTO Sends a message to the system console.
TSO Issues a TSO command or invokes a CLIST or a REXX exec during a SAS session.
WTO Sends a message to the system console.

第五类,宏语言函数;

%BQUOTE, %NRBQUOTE Masks special characters and mnemonic operators in a resolved value at macro execution.
%EVAL Evaluates arithmetic and logical expressions using integer arithmetic.
%INDEX Returns the position of the first character of a string.
%LENGTH Returns the length of a string.
%QUOTE, %NRQUOTE Masks special characters and mnemonic operators in a resolved value at macro execution.
%SCAN, %QSCAN Searches for a word that is specified by its position in a string.
%STR, %NRSTR Masks special characters and mnemonic operators in constant text at macro compilation.
%SUBSTR, %QSUBSTR Produces a substring of a character string.
%SUPERQ Masks all special characters and mnemonic operators at macro execution but prevents further resolution of the value.
%SYMEXIST Returns an indication of the existence of a macro variable.
%SYMGLOBL Returns an indication as to whether a macro variable is global in scope.
%SYMLOCAL Returns an indication as to whether a macro variable is local in scope,
%SYSEVALF Evaluates arithmetic and logical expressions using floating-point arithmetic.
%SYSFUNC, %QSYSFUNC Executes SAS functions or user-written functions.
%SYSGET Returns the value of the specified operating environment variable.
%SYSPROD Reports whether a SAS software product is licenses at the site.
%UNQUOTE During macro execution, unmasks all special characters and mnemonic operators for a value.
%UPCASE, %QUPCASE Converts values to uppercase.

第六类,多国语言函数,

EUROCURR Converts one European currency to another.
GETPXLANGUAGE Returns the current two letter language code.
GETPXLOCALE Returns the POSIX locale value for a SAS locale.
GETPXREGION Returns the current two letter region code.
KCOMPARE Returns the result of a comparison of character expressions.
KCOMPRESS Removes specified characters from a character expression.
KCOUNT Returns the number of double-byte characters in an expression.
KCVT Converts data from one type of encoding data toanother encoding data.
KINDEX Searches a character expression for a string of characters.
KINDEXC Searches a character expression for specified characters.
KLEFT Left-aligns a character expression by removing unnecessary leading DBCS blanks and SO/SI.
KLENGTH Returns the length of an argument.
KLOWCASE Converts all letters in an argument to lowercase.
KREVERSE Reverses a character expression.
KRIGHT Right-aligns a character expression by trimming trailing DBCS blanks and SO/SI.
KSCAN Selects a specified word from a character expression.
KSTRCAT Concatenates two or more character expressions.
KSUBSTR Extracts a substring from an argument.
KSUBSTRB Extracts a substring from an argument according to the byte position of the substring in the argument.
KTRANSLATE Replaces specific characters in a character expression.
KTRIM Removes trailing DBCS blanks and SO/SI from character expressions.
KTRUNCATE Truncates a numeric value to a specified length.
KUPCASE Converts all single-byte letters in an argument to uppercase.
KUPDATE Inserts, deletes, and replaces character value contents.
KUPDATEB Inserts, deletes, and replaces the contents of the character value according to the byte position of the character value in the argument.
KVERIFY Returns the position of the first character that is unique to an expression.
NLDATE Converts the SAS date value to the date value of the specified locale by using the date format descriptors.
NLDATM Converts the SAS datetime value to the time value of the specified locale by using the datetime- format descriptors.
NLTIME Converts the SAS time or the datetime value to the time value of the specified locale by using the NLTIME descriptors.
SORTKEY Creates a linguistic sort key.
TRANTAB Transcodes data by using the specified translation table.
VARTRANSCODE Returns the transcode attribute of a SAS data set variable.
VTRANSCODE Returns a value that indicates whether transcoding is enabled for the specified character variable.
VTRANSCODEX Returns a value that indicates whether transcoding is enabled for the specified argument.
UNICODELEN Specifies the length of the character unit for the Unicode data.
UNICODEWIDTH Specifies the length of a display unit for the Unicode data.

第七类,其他函数  以下是其他函数的不完全情况:

1,有模块有自己的专用函数,如IML模块里面的函数。

2,现在模块中出现,如果用得很多的话,就变成了常规函数,如有些函数是从其他版本中其他模块转过来的,如SAS/ETS的INTCINDEX,INTCYCLE等等; SAS High-Performance Forecasting的HOLIDAY和NWKDOM函数等等就是这样。

3,还有一类函数是SAS文档中没有记录的,比如说PROC SQL语句中的 MONOTONIC( ) 函数,但是可以使用的,半官方的解释就是不成熟,处于试用中的函数,这种函数有些地方确实能起到惊艳的作用,但需要小心使用,多测试,防止意外发生。

4,有些函数文档里一些情况也没叙述完全,可能在调试中。比如说函数indexw(),具体见说明见mysas圈

5,也许还有其他的情况,待考。

另附SAS9.2中新增和变动的函数列表(中文):
以下为新增的函数和 CALL 例程:
ALLCOMB
以最小更改顺序一次从 n 个变量中任选 k 个值时生成的所有组合。
ALLPERM
以最小更改顺序生成若干变量的值的所有排列。
ARCOSH
返回反双曲余弦。
ARSINH
返回反双曲正弦。
ARTANH
返回反双曲正切。
CALL ALLCOMB
以最小更改顺序一次从 n 个变量中任选 k 个值时生成的所有组合。
CALL ALLCOMBI
以最小更改顺序一次从 n 个对象中任选 k 个指数时生成的所有组合。
CALL GRAYCODE
以最小更改顺序生成 n 个项的所有子集。
CALL ISO8601_CONVERT
将 ISO 8601 时间间隔转换为日期时间值和持续时间值,或将日期时间值和持续时间值转换为 ISO 8601 时间间隔。
CALL LEXCOMB
以字典顺序一次从 n 个变量中任选 k 个非缺失值时生成的所有非重复组合。
CALL LEXCOMBI
以字典顺序一次从 n 个对象中任选 k 个指数时生成的所有组合。
CALL LEXPERK
以字典顺序一次从 n 个变量中任选 k 个非缺失值时生成的所有非重复排列。
CALL LEXPERM
以字典顺序生成若干变量的非缺失值的所有非重复排列。
CALL SORTC
对字符参数的值进行排序。
CALL SORTN
对数值参数的值进行排序。
CATQ
使用分隔符分隔各个项,并将含该分隔符的字符串用引号引起来,以此连接字符或数值。
CHAR
从字符串的指定位置返回单个字符。
CMISS
统计缺失参数的数量。
COUNTW
统计字符表达式中的字词数。
DIVIDE
返回用于处理 ODS 输出的特殊缺失值的除法结果。
ENVLEN
返回环境变量的长度。
EUCLID
返回非缺失参数的欧氏范数。
FINANCE
执行财务计算,如折旧、到期时间、应计利息、净现值、定期储蓄和内部收益率。
FINDW
在字符串中搜索单词。
FIRST
返回字符串的第一个字符。
GCD
返回一个或多个整数的最大公约数。
GEODIST
返回两个纬度和经度坐标之间的大地距。
GRAYCODE
以最小更改顺序生成 n 个项的所有子集。
INTFIT
返回两个日期之间的时间间隔。
INTGET
返回基于三个日期值或日期时间值的时间间隔。
INTSHIFT
返回与基时间间隔相对应的移位时间间隔。
INTTEST
若时间间隔有效,返回 1;若时间间隔无效,则返回 0。
LCM
返回能被一组数中的每个数整除的最小倍数。
LCOMB
计算 COMB 函数的对数,即一次从 n 个对象中任选 r 个的组合数的对数。
LEXCOMB
以字典顺序一次从 n 个变量中任选 k 个非缺失值时生成的所有非重复组合。
LEXCOMBI
以字典顺序一次从 n 个对象中任选 k 个指数时生成的所有组合。
LEXPERK
以字典顺序一次从 n 个变量中任选 k 个非缺失值时生成的所有非重复排列。
LEXPERM
以字典顺序生成若干变量的非缺失值的所有非重复排列。
LFACT
计算 FACT(阶乘)函数的对数。
LOG1PX
返回 1 加该参数的对数。
LPERM
计算 PERM 函数的对数,即从 n 个对象中任选 r 个元素的排列数的对数。
LPNORM
返回第二个参数和随后的非缺失参数的 Lp 范数。
MD5
返回指定的字符串的消息摘要的结果。
MSPLINT
返回保单调插值样条的纵坐标。
RENAME
重命名 SAS 逻辑库的成员、外部文件或目录。
SUMABS
返回非缺失参数的绝对值的总和。
TRANSTRN
若一个字符串中的某个子串的值大于零,则在该字符串中替换找到的所有该子串。
WHICHC
搜索与第一个参数相等的字符值,并返回第一个匹配值的索引。
WHICHN
搜索与第一个参数相等的数值,并返回第一个匹配值的索引。
ZIPCITYDISTANCE
返回两个邮政编码位置之间的大地距。
改进了以下函数中的参数说明:
DOPEN
打开目录,并返回一个目录标识符值。
EXIST
验证 SAS 逻辑库成员是否存在。
FOPEN
打开外部文件并返回一个文件标识符值。
FEXIST
验证与文件引用名相关的外部文件是否存在。
FILENAME
为外部文件、目录或输出设备分配或取消分配文件引用名。
FILEREF
验证是否已将文件引用名分配给当前 SAS 会话。
LIBNAME
为 SAS 逻辑库分配或取消分配逻辑库引用名。
LIBREF
验证是否已分配逻辑库引用名。
MOPEN
根据目录 ID 和成员名称打开文件,并返回文件标识符或 0。
PATHNAME
返回 SAS 逻辑库或外部文件的物理名称,或返回一个空格。
以下函数以前包含在 Risk Dimensions 中,现已成为 Base SAS 的一部分:
BLACKCLPRC
根据 Black 模型计算欧式期货期权的买权价格。
BLACKPTPRC
根据 Black 模型计算欧式期货期权的卖权价格。
BLKSHCLPRT
根据 Black-Scholes 模型计算欧式期权的买权价格。
BLKSHPTPRT
根据 Black-Scholes 模型计算欧式期权的卖权价格。
GARKHCLPRC
根据 Garman-Kohlhagen 模型计算欧式股票期权的买权价格。
GARKHPTPRC
根据 Garman-Kohlhagen 模型计算欧式股票期权的卖权价格。
MARGRCLPRC
根据 Margrabe 模型计算欧式股票期权的买权价格。
MARGRPTPRC
根据 Margrabe 模型计算欧式股票期权的卖权价格。
以下函数以前包含在 SAS/ETS 中,现已成为 Base SAS 的一部分:
INTCINDEX
按给定日期、时间或日期时间值,返回周期指数。
INTCYCLE
按给定日期、时间或日期时间间隔,返回下一较高季节周期的日期、时间或日期时间间隔。
INTFMT
按给定日期、时间或日期时间间隔,返回推荐的格式。
INTINDEX
按给定日期、时间或日期时间间隔和值,返回季节指数。
INTSEAS
按给定日期、时间或日期时间间隔,返回季节周期的长度。
以下函数以前包含在 SAS High-Performance Forecasting 中,现已成为 Base SAS 的一部分:
HOLIDAY
返回指定年中指定假日的日期。
NWKDOM
返回指定年的指定月中某个星期几第 n 次出现时的日期。
以下函数已由 SAS 语言参考:字典转移到 SAS/IML 文档:
MODULEIC
调用外部例程,并返回一个字符值(仅在 IML 环境下)。
MODULEIN
调用外部例程,并返回一个数值(仅在 IML 环境下)。
CALL MODULEI
调用外部例程,但不返回任何代码(仅在 IML 环境下)。
以下函数和 CALL 例程已增强:
CALL POKE
现在可以直接将浮点数写入基于 32 位平台的内存。
CALL POKELONG
现在可以直接将浮点数写入基于 32 位平台和 64 位平台的内存。
CALL SCAN
返回字符表达式中给定单词的位置和长度。
DATDIF
已将“ACT/360”和“ACT/365”这两个值添加到 basis 参数,并在美国证券业协会出版的文档中添加了一条参考信息。
FSEP
为十六进制字符分隔符添加了一个可选参数。
INDEX
添加了说明如何处理开头空格和结尾空格的示例。
LAG
添加了关于 LAG 函数内存限制的信息。
SCAN
返回字符表达式中的第 n 个单词。
ZIPSTATE
在文档中添加了关于美国陆军邮局 (Army Post Office, APO) 和美国海军邮局 (Fleet Post Office, FPO) 的信息。
RX 函数集和 CALL 例程已从文档中删除,取而代之的是一组 PRX 函数和 CALL 例程。这些 PRX 函数和 CALL 例程在 SAS 以前的版本中已可以使用,可以提供强大的功能。
以下为已删除的 RX 函数和 CALL 例程:
RXMATCH 函数
RXPARSE 函数
RXCHANGE CALL 例程
RXFREE CALL 例程
RXSUBSTR CALL 例程
SCANQ 函数和 CALL SCANQ 例程已从文档中删除,由功能强大的 SCAN 函数和 CALL SCAN 例程取代。

以上参考文献来源主要为: SAS9.2随机帮助  美国SAS研究所  2009

原创文章: ”最全的SAS9.2函数列表二“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/98