SAS常用函数

一、数学函数 

ABS(x) 求x的绝对值。

MAX(x1,x2,…,xn) 求所有自变量中的最大一个。

MIN(x1,x2,…,xn) 求所有自变量中的最小一个。

MOD(x,y) 求x除以y的余数。

SQRT(x) 求x的平方根。

ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。

CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。

FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。

INT(x) 求x扔掉小数部分后的结果。

FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。

LOG(x) 求x的自然对数。

LOG10(x) 求x的常用对数。

EXP(x) 指数函数 。

SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。

ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。

ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。

ATAN(y) 计算函数y=tan(x)在 的反函数,y取间值。

SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切

ERF(x) 误差函数

GAMMA(x) 完全 函数

此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。

二、数组函数 

数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括:

DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。

DIM k(x) 求数组x第k维的元素的个数。

LBOUND(x) 求数组x第一维的下界。

HBOUND(x) 求数组x第一维的上界。

LBOUND k(x) 求数组x第 k维的下界。

HBOUND k(x) 求数组x第 k维的上界。

三、字符函数 

较重要的字符函数有:

TRIM(s) 返回去掉字符串s的尾随空格的结果。

UPCASE(s) 把字符串s中所有小写字母转换为大写字母后的结果。

LOWCASE(s) 把字符串s中所有大写字母转换为小写字母后的结果。

INDEX(s,s1) 查找s1在s中出现的位置。找不到时返回0。

RANK(s) 字符s的ASCII码值。

BYTE(n) 第n个ASCII码值的对应字符。

REPEAT(s,n) 字符表达式s重复n次。

SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串

TRANWRD(s,s1,s2) 从字符串s中把所有字符串s1替换成字符串s2后的结果。

其它字符函数还有 COLLATE,COMPRESS,INDEXC,LEFT,LENGTH,REVERSE,RIGHT,SCAN ,TRANSLATE,VERIFY,COMPBL,DEQUOTE,INDEXW,QUOTE,SOUNDEX,TRIMN,INDEXW。

example1: substr

data_null_;

x="1234ABCD";

y=substr(x,3,2);

substr(x,1,2)="EF";

put x=/ y=;

run;

输出:

x=EF34ABCD

y=34

注意:

1. 必须是从字符变量中提取,对数值变量不起作用,必须转换为字符变量,如果是数字变量,在调用substr函数时会自动把数字变量转为字符变量,不过需要注意的是转化为的字符变量采用的是best12.格式。

2. n的长度不能超过p后面的长度,例如s=scorecard,b=Substr(s,5,5)系统会有提示。

3. 如果缺失n的话,SAS则会提取p后面全部字符,如果是替换的话,则不能缺失n。

4. 对于汉字的截取若使用substr函数将输出乱码,使用ksubstr函数即可,另外,ksubstrb函数可针对字节进行截取。

example2: tranwrd

data_null_;

x="ABabCDEFGABCD";

y=tranwrd(x,"AB","ef");

puty=;

run;

输出:y=efabCDEFGefCD

注意:

TRANWRD函数的字符串替换区分大小写。

example3: compress

COMPRESS (,,)

source 指定一个要被移除字符的源字符串。

chars  指定一栏初始字符,默认它是要从source里移除的。

modifiers  指定一个修饰符,函数的具体功能。如:

a 增加(A - Z, a - z)到初始字符里(chars)。

d 增加数字到初始字符里(chars)。

f 增加下划线和字母 (A - Z, a - z) 到初始字符里(chars)。

g 增加图形字符到初始字符里(chars)。

k 不移除初始字符(chars)而是返回这些字符。

l  增加小写字母(a - z)。

n 增加数字、下划线和字母(A - Z, a - z)。

p 增加标点符号。

s 增加空格,包括空格,水平制表符,垂直制表符,回车符,换行符和换页符。

t 剪掉尾部空格。

u 增加大写字母(A - Z)。

w 增加可印刷的字符。

X 增加十六进制字符

data_null_;

x="ABabCDEFGABCD";

y=compress(x,"A","l");

puty=;

run;

输出:y=BCDEFGBCD

注意:

1. 只有source,移除空格。

2. 只有source,chars时,从source中移除chars。

3.source ,chars,modifiers都有时,modifiers  K决定保留还是移除。无K时,移除chars加上modifiers指定的。

example4: cat

CAT(A,B): 拼接字符串A和B并保留首尾全部空格(同A||B)

CATS(A,B): 拼接字符串A和B并去掉首尾全部空格(同strip(A)||strip(B))

CATX("x",A,B): 拼接字符串A和B并去掉首尾全部空格,并且在字符串之间加上一个指定的字符串"x"(同strip(A)||"x"||strip(B))

CATT(A,B): 拼接字符串A和B并去掉各字符串尾部空格(同trim(A)||trim(B))

example:

data_null_;

a = 'am';

b = 'learning';

c =' SAS';

s1 = cat(a,b,c);

s2 = cats(a,b,c);

s3 = catx('_',a,b,c);

s4 = catt('I',a,b,c);

put s1 = / s2 = / s3 = / s4 = ;

run;

输出:

s1 = am learning SAS

s2 = am learning SAS

s3 = am_learning_SAS

s4 = I am learning SAS

四、日期和时间函数 

常用日期和时间函数有:

MDY(m,d,yr) 生成yr年m月d日的SAS日期值

Statements

Results

mn=8; dy=27; yr=12;

birthday= mdy(mn,dy,yr);

put birthday;

08/27/2012

mn=7; dy=11; yr=12;

anniversary = dy(mn,dy,yr);

put anniversary;

11JUL2012

YEAR(date) 由SAS日期值date得到年

MONTH(date) 由SAS日期值date得到月

DAY(date) 由SAS日期值date得到日

WEEKDAY(date) 由SAS日期值date得到星期几

QTR(date) 由SAS日期值date得到季度值

HMS(h,m,s) 由小时h、分钟m、秒s生成SAS时间值

DHMS(d,h,m,s) 由SAS日期值d、小时h、分钟m、秒s生成SAS日期时间值

DATEPART(dt) 求SAS日期时间值dt的日期部分

INTNX(interval,from,n) 计算从from开始经过n个in间隔后的SAS日期。其中interval 可以取'YEAR'、'QTR'、'MONTH'、'WEEK'、'DAY'等。比如,INTNX('MONTH', '16Dec1997'd, 3)结果为1998年3月1日。注意它总是返回一个周期的开始值。

INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval取'MONTH'等。比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。

其它日期和时间函数还有DATE、TODAY、 DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。详见《SAS系统-Base SAS软件使用手册》、《SAS系统-SAS/ETS软件使用手册》。

五、分布密度函数、分布函数 

作为一个统计计算语言,SAS提供了多种概率分布的有关函数。分布密度、概率、累积分布函数等可以通过几种统一的格式调用,格式为

分布函数值 = CDF(' 分布', x <, 参数表>);

密度值 = PDF(' 分布', x <, 参数表>);

概率值 = PMF(' 分布', x <, 参数表>);

对数密度值 = LOGPDF(' 分布', x <, 参数表>);

对数概率值 = LOGPMF(' 分布', x <, 参数表>);

CDF计算由'分布'指定的分布的分布函数, PDF计算分布密度函数值,PMF计算离散分布的分布概率,LOGPDF为PDF的自然对数,LOGPMF为PMF的自然对数。函数在自变量 x处计算,<, 参数表>表示可选的参数表。

分布类型取值可以为: BERNOULLI, BETA, BINOMIAL, CAUCHY, CHISQUARED, EXPONENTIAL, F, GAMMA, GEOMETRIC, HYPERGEOMETRIC, LAPLACE, LOGISTIC, LOGNORMAL, NEGBINOMIAL, NORMAL 或 GAUSSIAN, PARETO, POISSON, T, UNIFORM, WALD 或 IGAUSS, and WEIBULL。可以只写前四个字母。

例如,PDF('NORMAL', 1.96)计算标准正态分布在1.96处的密度值(0.05844),CDF('NORMAL', 1.96)计算标准正态分布在1.96处的分布函数值(0.975)。PMF对连续型分布即PDF。

除了用上述统一的格式调用外,SAS还单独提供了常用的分布的密度、分布函数。

PROBNORM(x) 标准正态分布函数

PROBT(x,df<,nc>) 自由度为df的t分布函数。可选参数nc为非中心参数。

PROBCHI(x,df<,nc>) 自由度为df的卡方分布函数。可选参数nc为非中心参数。

PROBF(x,ndf,ddf<,nc>) F(ndf,ddf)分布的分布函数。可选参数nc为非中心参数。

PROBBNML(p,n,m) 设随机变量Y服从二项分布B(n,p),此函数计算P(Y m)。

POISSON((lambda,n) 参数为lambda的Poisson分布Y n的概率。

PROBNEGB(p,n,m) 参数为(n,p)的负二项分布Y m的概率。

PROBHYPR(N,K,n,x<,r>) 超几何分布的分布函数。设N个产品中有K个不合格品,抽取n个样品,其中不合格品数小于等于x的概率为此函数值。可选参数r是不匀率,缺省为1 ,r代表抽到不合格品的概率是抽到合格品概率的多少倍。

PROBBETA(x,a,b) 参数为(a,b)的Beta分布的分布函数。

PROBGAM(x,a) 参数为a的Gamma分布的分布函数。

PROBMC 计算多组均值的多重比较检验的概率值和临界值。

PROBBNRM(x,y,r) 标准二元正态分布的分布函数,r为相关系数。

六、分位数函数 

分位数函数是概率分布函数的反函数。其自变量在0到1之间取值。分位数函数计算的是分布的左侧分位数。SAS提供了六种常见连续型分布的分位数函数。

PROBIT(p) 标准正态分布左侧p分位数。结果在-5到5之间。

TINV(p, df <,nc>) 自由度为df的t分布的左侧p分位数。可选参数nc为非中心参数。

CINV(p,df<,nc>) 自由度为df的卡方分布的左侧p分位数。可选参数nc为非中心参数。

FINV(p,ndf,ddf<,nc>) F(ndf,ddf)分布的左侧p分位数。可选参数nc为非中心参数。

GAMINV(p,a) 参数为a的伽马分布的左侧p分位数。

BETAINV(p,a,b) 参数为(a,b)的贝塔分布的左侧p分位数。

七、随机数函数 

SAS可以用来进行随机模拟。它提供了常见分布的伪随机数生成函数。

1.均匀分布随机数

有两个均匀分布随机数函数:UNIFORM(seed),seed必须是常数,为0,或5位、6位、7位的奇数。RANUNI(seed),seed为小于2**31-1的任意常数。在同一个数据步中对同一个随机数函数的多次调用将得到不同的结果,但不同数据步中从同一种子出发将得到相同的随机数序列。随机数种子如果取0或者负数则种子采用系统日期时间。

2.正态分布随机数

有两种,NORMAL(seed),seed为0,或5位、6位、7位的奇数。RANNOR(seed),seed为任意数值常数。

3.指数分布随机数

RANEXP(seed),seed为任意数值,产生参数为1的指数分布的随机数。参数为lambda的指数分布可以用RANEXP(seed)/lambda得到。

另外若Y=alpha-beta*LOG(RANEXP(seed)),则Y为位置参数为alpha,尺度参数为beta的极值分布。若Y=FLOOR(-RANEXP(seed)/LOG(p)),那么Y是具有参数p的几何分布变量。

4.伽马分布随机数

RANGAM(seed, alpha),seed为任意数值常数,alpha>0,得到参数为alpha的伽马分布。设X=RANGAM(seed, alpha),则Y=beta*X是形状参数为alpha,尺度参数为beta的GAMMA分布随机数。如果alpha是整数,则Y=2*X是自由度为 2*alpha的卡方分布随机数。

如果alpha是正整数,则Y=beta*X是Erlang分布随机数,为alpha个独立的均值为beta的指数分布变量的和。

如果Y1=RANGAM(seed,alpha),Y2=RANGAM(seed,beta),在Y=Y1/(Y1+Y2)是参数为(alpha,beta )的贝塔分布随机数。

5.三角分布随机数

RANTRI(seed,h),seed为任意数值常数,0<h<1。此分布在0到1取值,密度在0到h 之间为2x/h,在h到1之间为2(1-x)/(1-h)。

6.柯西分布随机数

RANCAU(seed),seed为任意数值常数。产生位置参数为0,尺度参数为1的标准柯西分布随机数。Y=alpha+beta*RANCAU(seed)为位置参数为alpha,尺度参数为beta的一般柯西分布随机数。

7.二项分布随机数

RANBIN(seed,n,p)产生参数为(n,p)的二项分布随机数,seed为任意数值。

8.泊松分布随机数

RANPOI(seed,lambda)产生参数为lambda>0的泊松分布随机数,seed为任意数值。

9.一般离散分布随机数

RANTBL(seed, p1, …, pn)生成取1,2,…,n的概率分别为p1,…,pn的离散分布随机数。

八、样本统计函数 

样本统计函数把输入的自变量作为一组样本,计算样本统计量。其调用格式为“函数名(自变量1,自变量2,…,自变量n)”或者“函数名(OF 变量名列表)”。比如SUM是求和函数,如果要求x1,x2,x3的和,可以用SUM(x1,x2,x3),也可以用SUM(OF x1-x3)。这些样本统计函数只对自变量中的非缺失值进行计算,比如求平均时把缺失值不计入内。

各样本统计函数为:

MEAN 均值

MAX 最大值

MIN 最小值

N 非缺失数据的个数

NMISS 缺失数值的个数。

SUM 求和

VAR 方差

STD 标准差

STDERR 均值估计的标准误差,用STD/SQRT(N)计算。

CV 变异系数

RANGE 极差

CSS 离差平方和

USS 平方和

SKEWNESS 偏度

KURTOSIS 峰度

SAS常用函数的更多相关文章

  1. 7.打开文件、文件读写操作、with方式、文件常用函数

    打开文件: 在python3中,打开文件的函数是: open(file, mode='r', buffering=None, encoding=None, errors=None, newline=N ...

  2. 思迈特软件Smartbi:Excel数据分析常用函数汇总!

    多传统行业的数据分析师只要求掌握Excel即可,会SPSS/SAS是加分项.即使在挖掘满街走,Python不如狗的互联网数据分析界,Excel也是不可替代的. Excel是我们工作中经常使用的一种工具 ...

  3. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  4. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  5. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  6. PHP常用函数、数组方法

    常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...

  7. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  8. Thinkcmf:页面常用函数

    Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title}        <!--SEO标题--> {$site_seo_keywords}   < ...

  9. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

随机推荐

  1. debug fortran

    exmple: gfortran -g -fcheck=all -Wall segf.f90

  2. codeforces1003D(贪心)

    D. Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  3. <Impala><Overview><UDF>

    Overview Apache Impala (incubating) is the open source, native analytic database for apache Hadoop. ...

  4. uwsgi理解

    uwsgi uWSGI 是一个 Web 服务器,它实现了 WSGI 协议.uwsgi.http 等协议.Nginx 中HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换.WSGI ...

  5. [转][译] Closures in Lua - Lua中的闭包

    http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...

  6. phpStrom--我常用的快捷键

    ALT+ ←/→  切换代码视图,标签切换 ALT+ ↑/↓  在方法间快速移动定位 ctrl+shift+r  查找 替换 alt+ctrl+l 格式化代码 CTRL+N   查找类 CTRL+W  ...

  7. 20165228 学习基础和C语言基础调查

    ========== 做中学读后感 我依然认为兴趣与自觉性是推动一个人进步的两大因素,他们之间的区别是"兴趣"带来的影响更多是主动性的学习,而"自觉"则是略显被 ...

  8. ZK集群搭建和配置

    1. 克隆三台空虚拟机(含有jdk和lrzsz),修改网络ip,并关闭虚拟机的防火墙 临时关闭:service iptables stop 永久关闭:chkconfig iptables off 2. ...

  9. Arcgis API本地化

    ①将API文件夹复制到该目录下C:\Program Files\ArcGIS\Server\framework\runtime\tomcat\webapps ②打开API文件夹中的init.js文件( ...

  10. xdoj 1067组合数学+动态规划 (一个题断断续续想了半年 233)

    题目分析 : (8 4) 可以由(7 4),(6,4),( 4,4) 基础上转化 意味着一个新加入的元素可以按照它加入的方式分类,从而实现动态规划 核心:加入方式 新加入的元素构成转换环的元素个数(n ...