3-SAS运算符

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
 例如:If x<y then c=5;
Else c=12;  比较算符也可以用在赋值语句的表达式里
 例如: c=5*(x<y)+12*(x>=y);  因为表达式(x<y)和(x>=y)首先被计算,它们的
结果(0或1)替代括号中的表达式,所以该语 句与上面语句是等价的。
8

3.逻辑算符
 逻辑算符也称为布尔(Boolean)算符,在表达式里通常 用来连接一系列比较式。逻辑算符包括:
15

(1)剔除数据缺失的样本

 Data new1;



inБайду номын сангаасut x year;

 x1=x**2;

 x2=log(x)-2;

 x3=x+year;

 if year=2000 then dum=0;

 else dum=1;

 if year=. then delete;

 x4=5*(x<x1)+12*(x>=x1);
总是数值1(真)或0(假)。字符运算对象在字符之间从左 到右被比较。字符次序用机器排列次序确定(即按 ASCII码排列序列,插入-符号)。  例如,表达式’GRAY’>’ADAMS’是真的,它与表达 式’ANDRE ,C’<’ANDRE,CLYDE’一样,它们的值 都是1。
7

 比较运算符经常出现在IF语句中

四、日期时间函数: weekday ( )由SAS日期值date得到星期几,从周日开始算 day()返回几号 month()返回第几月 qtr()返回第几季度 year()返回第几年
SAS系统存贮日期值为:1960年1月1日到指定日期之间的天数 SAS存贮时间值为:从午夜开始到指定时间的秒数 日期时间值存贮为:1960年1月1日午夜到指定日期时间之间的秒数
或 Data new3; set sashelp.class;
if sex='男' then delete; /*字符型区分大小写,内容打英文单引号*/
Run; proc print data=new3; run;
17

(3)剔除某些异常值 Data new4; set sashelp.class; if age>=14 then delete;

 by descending total;

 run;

 proc print data=oranges;

 /*var _numeric_;*/

 /* var _character_;只显示数值或字符型*/

 title '对ORANGES数据集的品尝检验结果';

 run;

练习:operator例
Run; proc print data=new4; run;
或 Data new5;
set sashelp.class; if 13>age>10 then delete;; Run;
18

 data oranges;

/*先把oranges放入work*/

 input variety $ flavor texture looks;

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 2004/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 2015/4/28 ; run; proc print; run;
sum ()、 mean ()、exp (x) 、log (x) 、 求x的自然对数 log10 (x)、log2(x) 、sin (x)、arsin (x)
22

二、截取函数:
ceil (x)求大于等于x的最小整数,当x为整数时就是x本身,否则为x右边最近的整数。
f loor (x)求小于等于x的最大整数,当x为整数时就是x本身,否则为x左边最近的整数。
例如,y=x + . ; 则y的值为缺失值(.)
4

2.比较算符

比较算符确定两个变量之间的一种关系,如果这种 关系成立,则输出结果为1(真);如果它不成立,则 输出结果为0(假)。

比较算符包括:

=(EQ) 等于

^=(NE) 不等于

>(GT) 大于

<(LT) 小于

>=(GE) 大于等于 <=(LE) 小于等于

^> 不大于

^< 不小于

IN 等于列表中的一个

5

考虑表达式:A<=B (1)数值比较
如果A的值为4,B的值为3,则表达式A<=B的值 为0(假); 若A的值为5,B的值为9,则表达式A<=B的值为 1(真); 若A与B的值均为5,则表达式成立,且其值为1。
6

 (2)字符的比较  比较的对象可以是数值也可以是字符,但比较的结果
SAS运算符介绍
 定义:SAS运算符是一些符号
 算术运算符  比较运算符  逻辑运算符
 SAS使用两种主要类型的运算符:
 前缀算符  中缀算符
2

 前缀运算符用于变量、常数、函数或者用括号括起来的 表达式。
 前缀算符有:加号,减号,NOT和符号^(等价于 not)。
 例如: +Y -25 -COS(A) -(x1+x2-100)
例 if (flavor^=texture & variety='mandarin') then total=total*100;
13

应用运算符进行数据操作 1、生成新的变量
Data new; input x year;
x1=x**2; x2=log(x)-2; x3=x+year; if year=2000 then dum=0; else dum=1; cards; 1 2000 2. 3 2002 ; run; proc print data=new; title '生成变量'; run;

练习:
对sashelp.class转存至work,并进行以下操作: 1.新生成两行数据,写清自己及朋友的身高、体重; 2.按以下公式生成新的变量 BMI,并按下表检查自己及朋友的BMI数 值是否正常;

SAS函数

SAS函数
 一、数学函数:

abs()绝对值、max ()、min ()、  mod (x, y)取余数、sign (x)返回x的符号、sqrt (x)返回x的平方根、
 & (AND) 与; | (OR) 或; ^ (NOT) 非
 例如: age=25 AND sex= ’ 男’ age=25 & sex= ’ 男’ age=25 OR sex= ’ 男’
9

4.其他算符

5 .运算次序
 关于运算次序,SAS有如下的三个准则:
 准则1:在括号里的表达式先计算;  准则2:较高优先级的运算先被执行;  准则3:对于相同优先级的算符,在公式左边的
14

 2、对数据进行筛选

 案例:基于研究设计的需要,文章需要剔除以下公司:  (1)剔除了研究变量数据缺失的公司;  (2)由于金融行业的特殊性,本文将银行等金融类上 市公司排除在样本之外;  (3)此外,为了保证研究结论不受极端值的影响,本 文剔除了所用到的研究变量在1%和99%分位数之外的观 测值。
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压缩掉

七、随机数函数: rannor (seed)返回正态分布的随机数,
seed为任意数值常数。  在同一个数据步中对同一个随机数函数的多次调用将得到不同的结果,
但不同数据步中从同一种子出发将得到相同的随机数序列。
Functions例

data A; input x1-x5 x6 $ date yymmdd15.; /*format date yymmdd10.表示date年月日共占10位;1960.1.1开始计算间隔 天数*/ 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个*/
运算先被执行。(第一级除外)
11

准则3的例外情况: 1) 对第一级,在公式右边的先做;(not 也是,注
意乘方) 2**3**2 <=> 2**(3**2)
2) 当两个比较算符围着一个量时,则等价于一个 and运算。例如:
12<age<20 <=> 12<age and age<20
12

各运算符的优先等级: 在括弧里的表达式先计算 第一级:** (乘方),(+ -)前缀,^ (Not ),>< , < > 第二级:* / 第三级:+ - 第四级:|| (连接两个字符串) 第五级:<,<=,=,^=,>,>=,^>,^< 第六级:& (AND) 第七级:| (OR)

 cards;

 1 2000

 2.

 3 2002

;

 run;

 proc print data=new1;

 title '生成变量';

 run;
16

(2)剔除某些特定的样本(如金融行业)
Data new2; set new1;
if x=1 then delete; Run; proc print data=new2; run;





a=f lavor<>texture**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;

运算练习1
结果显示在output,否则在log

运算练习2
 中缀运算符作用在算符两边的运算对象上,例如6<8 。
 中缀算符一般分为四类:算术算符、比较算符、逻 辑算符和其它算符(最大、最小和连接)。
3

1.算术算符
算术算符表示执行一种算术运算,包括:
** 乘方 * 相乘 / 相除 + 相加 - 相减
如果算术算符有一个运算对象是缺失值,运算结果也是 缺失值。



total=f lavor+texture+looks;





if variety in ('navel','Valencia')

 then total=total*10;





if (flavor<texture & variety='mandarin')

 then total=total*100;
25

五、概率统计函数: probnorm (x)标准正态分布函数
其他概率统计函数:常用sas函数汇总---参考资料
26

六、各样本统计函数
n (of X1-Xn)返回X1-Xn之间有多少个非缺失数据 nmiss (of X1-Xn)返回X1-Xn之间有多少个缺省值 var (of x1-xn)返回X1-Xn方差 std (of x1-xn)返回X1-Xn标准差
相关文档
最新文档