,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,SAS,运算符,及,SAS,函数,2,SAS,运算符介绍,定义:SAS运算符是一些符号,算术运算符,比较运算符,规律运算符,SAS使用两种主要类型的运算符:,前缀算符,中缀算符,3,前缀运算符用于变量、常数、函数或者用括号括起来的表达式。,前缀算符有:加号,减号,NOT和符号(等价于not)。,例如:+Y-25-COS(A)-(x1+x2-100),中缀运算符作用在算符两边的运算对象上,例如6(GT)大于 =(GE)大于等于 不大于 不小于,IN 等于列表中的一个,6,考虑表达式:A=B,1数值比较,假设A的值为4,B的值为3,则表达式A=B的值为0(假);,假设A的值为5,B的值为9,则表达式AADAMS是真的,它与表达式ANDRE,CANDRE,CLYDE一样,它们的值都是1。,8,比较运算符常常消逝在IF语句中,例如:If xy then c=5;,Else c=12;,比较算符也可以用在赋值语句的表达式里,例如:c=5*(x=y);,由于表达式(x=y)首先被计算,它们的结果0或1替代括号中的表达式,所以该语句与上面语句是等价的。,9,3.规律算符,规律算符也称为布尔(Boolean)算符,在表达式里通常用来连接一系列比较式。规律算符包括:,&(AND)与;|(OR)或;(NOT)非,例如:age=25 AND sex=男,age=25&sex=男,age=25 OR sex=男,4.,其他算符,11,5,.,运算次序,关于运算次序,SAS有如下的三个准则:,准则1:在括号里的表达式先计算;,准则2:较高优先级的运算先被执行;,准则3:对于一样优先级的算符,在公式左边的运算先被执行。第一级除外,12,准则3的例外状况:,1)对第一级,在公式右边的先做;not 也是,留意乘方,2*3*2 2*(3*2),2)当两个比较算符围着一个量时,则等价于一个and运算。例如:,12 12age and age,其次级:*/,第三级:,第四级:|(连接两个字符串),第五级:,=,=14 then delete;,Run;proc print data=new4;,run;,或,Data new5;,set sashelp.class;,if 13age10 then delete;,Run;,data oranges;/*先把oranges放入work*/,input variety$flavor texture looks;,total=flavor+texture+looks;,if variety in(”navel”,”Valencia”),then total=total*10;,if(flavortexture&variety=”mandarin”),then total=total*100;,a=flavortexture*2;,b=variety|”.var”;,label total=“总数“;,cards;,navel 9 8 6,temple 7 7 7,Valencia 8 9 9,mandarin 5 7 8,;,proc sort data=oranges;,by descending total;,run;,proc print data=oranges;,/*var _numeric_;*/,/*var _character_;只显示数值或字符型*/,title”对ORANGES数据集的品尝检验结果”;,run;,练习:,operator,例,练习:,对sashelp.class转存至work,并进展以下操作:,新生成两行数据,写清自己及朋友的身高、体重;,按以下公式生成新的变量,并按下表检查自己及朋友的数值是否正常;,SAS,函数,22,SAS,函数,一、数学函数:,abs确定值、max、min、,mod(x,y)取余数、sign(x)返回x的符号、sqrt(x)返回x的平方根、sum、mean、exp(x)、log(x)求x的自然对数、log10(x)、log2(x)、sin(x)、arsin(x),二、截取函数:,ceil(x)求大于等于x的最小整数,当x为整数时就是x本身,否则为x右边最近的整数。,floor(x)求小于等于x的最大整数,当x为整数时就是x本身,否则为x左边最近的整数。,int(x)求x扔掉小数局部后的结果。,ROUND(x,eps)求x依据eps指定的精度四舍五入后的结果,比方ROUND(5654.5654,0.01)结果为5654.57,ROUND(5654.5654,10)结果为5650。,三、字符函数:,index(S,S1)在s中查找s1的位置,找不到时返回0。,substr(S,p,n)从字符串s中的第p个字符开头抽取n个字符长的子串,scan(S2,n)在s2中查找第n个单词,upcase(S)把字符串s中全部小写字母转换为大写字母后的结果。,compress(S,S1)把S 中字符S1压缩掉,25,四、日期时间函数:,weekday()由SAS日期值date得到星期几,从周日开头算,day返回几号,month返回第几月,qtr返回第几季度,year返回第几年,SAS系统存贮日期值为:1960年1月1日到指定日期之间的天数,SAS存贮时间值为:从午夜开头到指定时间的秒数,日期时间值存贮为:1960年1月1日午夜到指定日期时间之间的秒数,26,五、概率统计函数:,probnorm(x),标准正态分布函数,其他概率统计函数,:常用,sas,函数汇总,-,参考资料,六、,各样本统计函数,n(of X1-Xn),返回,X1-Xn,之间有多少个非缺失数据,nmiss(of X1-Xn),返回,X1-Xn,之间有多少个缺省值,var(of x1-xn),返回,X1-Xn,方差,std(of x1-xn),返回,X1-Xn,标准差,七、随机数函数:rannor(seed)返回正态分布的随机数,seed为任意数值常数。,在同一个数据步中对同一个随机数函数的屡次调用将得到不同的结果,但不同数据步中从同一种子动身将得到一样的随机数序列。,Functions例,data A;,input x1-x5 x6$date yymmdd15.;,/*format date yymmdd10.表示date年月日共占10位开头计算间隔天数*/,x7=”o”;,x8=”I am a student”;/*x7、x8 是字符串*/,/*以下是数学函数*/,a1=max(x1,x2);/*x1,x2的最大值返回给a1*/,a2=sum(x1,x2);,a3=sign(x3);,a4=sqrt(x5);,a5=mean(x1,x2);,/*以下是截取函数*/,b1=floor(a5);/*a5取较小的整数*/,/*以下是字符函数*/,c1=index(x6,x7);/*x6中查找x7的位置*/,c2=substr(x6,3,3);/*x6第3个字符开头共取3个*/,c3=scan(x8,2);,c4=upcase(x8);,c5=compress(x6,x7);,/*以下是时间函数*/,d1=weekday(date);/*求date是星期几*/,d2=year(date);,d3=qtr(date);,d4=day(date);,/*以下是概率函数*/,e1=probnorm(0);,e2=n(of x1-x5);,e3=nmiss(of x1-x5);,e4=var(x1,x2);,e5=std(x1,x2);,/*以下是随机数函数*/,f1=ranuni(1);,cards;,1 2 3 5 -6 amazon 2023/9/22,3 5 0 8 0 box 1960/1/2,9 10 -7 9 4 check 1960/1/1,7 6 .1 8 delete 1959/12/31,-2.5-2.3 3 1 2 desk 2023/4/28,;,run;,proc print;,run;,运算练习,1,结果显示在,output,否则在,log,运算练习,2,运算练习,3,运算练习,4,第50章_SAS函数简介-例题,将该PDF中的程序复制入SAS进展验证学习,从例5-19开头,留意核实分布的区间是否写反,n:确定概念,从第n列开头读,+n:相对概念,从当前开头,移n列开头读,#n :进展指针把握,跳到第n行开头读,