常用SAS函数简介

上传人:s9****2 文档编号:590409023 上传时间:2024-09-14 格式:PPT 页数:50 大小:510KB
返回 下载 相关 举报
常用SAS函数简介_第1页
第1页 / 共50页
常用SAS函数简介_第2页
第2页 / 共50页
常用SAS函数简介_第3页
第3页 / 共50页
常用SAS函数简介_第4页
第4页 / 共50页
常用SAS函数简介_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《常用SAS函数简介》由会员分享,可在线阅读,更多相关《常用SAS函数简介(50页珍藏版)》请在金锄头文库上搜索。

1、常用SAS函数简介阮红莲广州医科大学 统计学系2021/7/11SAS函数 SAS系统提供的SAS函数比一般高级语言的标准函数多得多,尤其是概率函数、分位数函数、样本统计函数、随机数函数。 如此丰富的SAS函数,对用户统计分析计算以及编写SAS程序带来极大的方便。2021/7/12SAS函数定义 SAS函数是一个子程序,对0个或几个参数(自变量)返回一个结果值。SAS函数的形式:函数名(函数名(参数1,参数2,)例如: MEAN(x,y,z,a)MIN(SUM(x,y,z),1000)2021/7/13SAS函数中的参数1)参数类型:变量名;常数;函数;表达式。例1 函数及其参数类型举例。 2

2、021/7/142)参数个数: 有些函数不需要自变量,有些只需要一个自变量,有些函数有多个自变量。3)参数表示法:当函数有多个参数时,必须用逗号分隔开。4)参数名缩写方法: 函数名(OF 变量名1 变量名n ) 2021/7/15参数的表示法举例以逗号(,)分隔参数,如 sum(x1, x2, x3, x4, x5, x6, x7, x8)去掉逗号(,),最前面加上“of”,如 sum(of x1 x2 x3 x4 x5 x6 x7 x8)去掉逗号(,),最前面加上“of”,变量简写:sum(of x1 - x8)2021/7/16例2 正确与错误的表示方法例3 数组元素自变量的缩写方法arr

3、ay y10 y1-y10; /*定义数组y10 */x=sum (of y*);z=sum (of y1-y10);例中,两个SUM函数的表示法是等价的。 2021/7/17函数结果通常函数的结果由其自变量的属性决定: 自变量是字符时结果变量为字符; 自变量是数值时结果变量为数值。PUT函数是一个例外,它不管自变量是什么类型,其结果总是字符值。2021/7/18用PUT语句在LOG窗口显示函数值例4 显示概率值和分位数。data;Y=probnorm(1.96); /* 标准正态分布Z小于1.96的概率 */put Y;q1=tinv(.95, 2); /*自由度为2的t分布的0.95分位数

4、*/q2=tinv(.95, 2, 3); /*自由为2,非中心参数为3的t分布的0.95分位数*/put q1= q2=;run;0.9750021049q1=2.9199855804 q2=13.8943760712021/7/19利用HELP查找SAS系统提供的各种函数索引中键入:SAS FunctionHelp下拉菜单SAS 帮助与文件2021/7/110SAS函数种类在SAS系统9.1版本,SAS函数分为二十五种类型,分别是算术函数、截取函数、数学函数、概率和密度函数、分位数函数、非中心函数、样本统计函数、随机数函数、财政金融函数、日期和时间函数、换算函数和特殊函数等。在SAS系统6

5、.12版本,SAS函数分为十七种类型共有178个,SAS系统8.1版本,SAS函数分为二十二种类型共有319个函数。2021/7/1112021/7/1121.日期时间函数简介2021/7/1132021/7/114例1.1:计算两个日期之间相隔的天数data _null_;sdate=01jan2012d;edate=01jan2013d;actual=datdif(sdate, edate, act/act); days360=datdif(sdate, edate, 30/360); put actual= days360=; run;data _null_;actual=datdif(

6、01jan2002d, 01jan2003d, act/act);days360=datdif(01jan2002d, 01jan2003d, 30/360);put actual= days360=; run;2021/7/115例1.2: 以日为单位计算当前日期的天数。data;x=date (); y=today();format x y yymmdd10.;put x= y=;run;2021/7/116例1.3: 将时间值换算为以秒计数的计算方法。data;hms=hms (21,50,51); put hms=;x=21*60*60+50*60+51; put x=;mdy=mdy

7、 (08,18,2001); put mdy=;format mdy yymmdd10.;run;2021/7/117练习1计算以下数据表中日期值所在的年季月以及处于某月的第几天、某周的第几天。当日期值date=14JUL2007d时,试问这一天是星期几? Date1991-01-021991-01-03 1991-01-04 1991-01-05 1991-01-07 1991-01-08 1991-01-09 1991-01-10 1991-01-11 1991-01-122021/7/118解答:data a;Input date YYMMDD10.;Cards;1991-01-0219

8、91-01-03 1991-01-04 1991-01-05 1991-01-07 1991-01-08 1991-01-09 1991-01-10 1991-01-11 1991-01-12;Proc print;Format date YYMMDD10.;run;Data b;Set a;year=year (date);qtr=qtr (date);month=month (date);day=day (date);Weekday=weekday(date);proc print noobs; format date YYMMDD10.;Run;2021/7/119解答:data _nu

9、ll_;weekday=weekday(12JUL2007d);put weekday=; run;2021/7/1202. 数学函数ABS (x) :求x的绝对值Mod (x,y) :求x/y的余数MAX (x1,x2,x3,xn):求最大值 MIN (x1,x2,x3,xn):求最小值SQRT(x):求x的算术平方根 LOG(x):求x 的自然对数EXP(x) :求指数函数exSIN(x)、COS(x)、TAN(x):正弦、余弦、正切函数.2021/7/121例2:求-314的绝对值,31除以4的商的余数以及-314 、-87、0、1127这4个数的最大值data _null_;x=abs

10、(-314);y=mod(31,4);z=max(-314 ,-87,0,1127);put x= y= z=; run;2021/7/122练习2ex2.1 计算0、1.57、 3.14对应的正弦函数值,并将结果显示在输出窗口。ex2.2 计算e的0次幂,并计算1的自然对数。2021/7/123解答:Data;a=sin(0);b=sin(1.57);c=sin(3.14);File print;Put a= 6.2 b= 6.2 c= 6.2;Run;Data;a=sin(0);b=sin(1.57);c=sin(3.14);proc print;format a 6.2 b 6.2 c

11、6.2;Run;Data;X=exp(0);Y=log(1);Put x y;Run;2021/7/1243. 数组函数2021/7/125数组函数应用举例data;array mult5,10,2 mult1-mult100;a=DIM1(MULT);b=DIM2(MULT);c=DIM3(MULT);put a b c;run;例3:产生一个5102的三维数组,并提取各维度上元素的个数。2021/7/126练习 3产生一个行变量名为2:6,列变量名为4:13的二维数组,输出各维度上的上界和下界。2021/7/127解答:data;array mult2:6,4:13 mult1-mult5

12、0;a=HBOUND(MULT);b=HBOUND2(MULT);c=lBOUND(MULT);d=lBOUND(MULT,2);put a b c d;run;2021/7/1284. 样本统计量函数2021/7/129简单统计量函数应用举例例4:请求出2、4、6、3、1这五个数的最大值、最小值、算术平均值、标准差、变异系数。data test4;input x1-x5;cards;2 4 6 3 1;run;data simple_statistics;set test1;max_x=max(of x1-x5);min_x=min(of x1-x5);mean_x=mean(of x1-x

13、5);std_x=std(of x1-x5);cv_x=cv(of x1-x5);run;ods html;proc print data=simple_statistics;var max_x min_x mean_x std_x cv_x;run;ods html close;2021/7/130用简便的方法实现例1中目的data simple_statistics;max_x=max(2,4,6,3,1);min_x=min(2,4,6,3,1);mean_x=mean(2,4,6,3,1);std_x=std(2,4,6,3,1);cv_x=cv(2,4,6,3,1);run;ods

14、html;proc print data=simple_statistics;var max_x min_x mean_x std_x cv_x;run;ods html close;2021/7/131练习4某农村地区1998年随机抽查测量10名13岁女孩的身高,资料如下,试求全距、均值、标准差、标准误、变异系数。 145.1 143.3 153.2 152.3 150.6 148.1 144.0 137.1 158.2 146.72021/7/132解答:data aa;input x1-x10;cards;145.1 143.3 153.2 152.3 150.6 148.1 144.0

15、 137.1 158.2 146.7;run;data bb;set aa;a=range(of x1-x10);b=mean(of x1-x10);c=std(of x1-x10);d=cv(of x1-x10);file print;put a b c d;run;2021/7/1335. 截取函数简介2021/7/134SAS截取函数应用举例例5:请把STD=1.92354和CV=0.601106用3个不同的截取函数(ceil、int、round)进行运算,并分析这些函数的作用。data test5;STD=1.92354;CV=0.601106;a1=ceil(STD); b1=cei

16、l(CV);a2=int(STD);b2=int(CV);a3=round(STD, 0.001);b3=round(CV, 0.001);ods html;proc print data=test2;Var a1-a3 b1-b3;run;ods html close;2021/7/135练习5求小于等于31.77的最小整数;将1984.314保留2位小数。2021/7/136解答:data;x=floor(31.07);y=round(1984.314,0.01);file print;put x y;run;2021/7/1376. SAS概率函数2021/7/138SAS概率函数应用举

17、例例6:试求出服从标准正态分布的随机变量z取值分别小于等于-2.576、-1.960 、-1.645 、-1.282 、0 、1.282 、1.645 、1.960 、2.576所对应的概率。data test3;a1=round(probnorm(-2.576),0.001);a2=round(probnorm(-1.960),0.001);a3=round(probnorm(-1.645),0.001);a4=round(probnorm(-1.282),0.001);a5=round(probnorm(0),0.001);a6=round(probnorm(1.282),0.001);a

18、7=round(probnorm(1.645),0.001);a8=round(probnorm(1.960),0.001);a9=round(probnorm(2.576),0.001);Format a1-a9 5.3;ods html;proc print data=test3;Var a1-a9;run;ods html close;2021/7/139练习 6设随机变量X服从自由度为3的中心卡方分布,计算X7.94的概率。2021/7/140解答data;p=1-probchi(7.94,3);put p=;run;2021/7/1417. SAS概率分布下分位数函数2021/7/1

19、42例7:试求t临界值表。options LS=95 PS=55;data abc;array T(50,9);array df(50) df1-df50;g=1;k=1;do d=1 to 40,50,60,70,80,90,100,200, 500,1000,100000000;df(k)=d;k+1;w=1;do alpha=0.50,0.20,0.10,0.05,0.02, 0.01,0.005,0.002,0.001;p=1-alpha/2;b=tinv(p,d);b=round(b,0.0001);T(g,w)=b; w=w+1;Output; end; g=g+1; end;Ti

20、tle; title t临界值表;ods html style=journal;file print;put #1 3df alpha: 140.50 230.20 310.10390.05 480.02 570.01 660.005 760.002 860.001;put #2 _;do L=1 to 50;c=L+2; df(50)=9999;put #c 1 df(L) 4.0 13 T(L,1) 6.4 21T(L,2) 6.4 29 T(L,3) 6.437 T(L,4) 7.4 46T(L,5) 7.4 55 T(L,6) 7.4 64 T(L,7) 8.4 74 T(L,8) 8

21、.4 84 T(L,9) 8.4;end;run;ods html close;footnote;footnote note: df=9999 stands for df=100000000;2021/7/143练习7设随机变量t(df),计算t分布的分位数tp(df),其中自由度和对应概率值分别为:n=1, 5, 10, 20; p=0.10, 0.90, 0.95, 0.975;2021/7/144解答:data _null_;t1=tinv(0.10,1);t2=tinv(0.90,5);t3=tinv(0.95,10);t4=tinv(0.975,20);put t1= t2= t3=

22、 t4=; run;2021/7/1458. SAS随机数函数1.UNIFORM(seed)和RANUNI(seed):产生均匀分布随机数函数;2.NORMAL(seed)和RANNOR(seed):产生正态分布随机数函数;3.RANEXP(seed):指数分布随机数函数;4.RANGAM(seed,alpha):伽马分布随机数函数;5.RANTRI(seed,h):三角分布随机数函数;6.RANCAU(seed) :柯西分布随机数函数;7.RANBIN(seed,n,p) :二项分布随机数函;8.RANPOI(seed,lambda) :泊松分布随机数函数;9.RANTBL(seed,p1,

23、pi,pn) :离散分布随机数函数;10.Rand(dist, parm-1, , parm-k) :根据特定的分布产生随机数。2021/7/146data pgm20_18;retain _seed_ 0;n=10;p=0.5;do _i_=1 to 1000;binom1=RANBIN(_seed_, n, p);output;end;drop _seed_ _i_;run;例8:产生二项分布(10,0.5)的随机数2021/7/147产生1000个服从标准正态分布的随机数练习8:2021/7/148解答:data RV;retain _seed_ 0; mu=0;sigma=1; do _i_ = 1 to 1000;Normal1 = mu + sigma * rannor(_seed_); output;end;drop _seed_ _i_ mu sigma;run;2021/7/149 结束语结束语若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号