第二章[SAS编程基础]
- 格式:doc
- 大小:82.50 KB
- 文档页数:9
第一章:DATA 步阐述DA TA 步是SAS 的一个关键步,正确理解其执行过程将会学习起来更方便。
1)DATA 步是一个循环,数据是一行一行地执行(与SQL 过程不同,它是对整个数据集进行操作);2)DA TA 步在执行时,将数据放在PDV 中,在这里将数据整理成想要的格式3)有三种情况可将PDV 中的数据输出到数据集中,OUTPUT 语句,return 语句,data 步结尾(;或run;)Output 语句:此语句出现在data 步中间时,将PDV 中数据输出到SAS 数据后,继续执行直到data 步结尾。
Return 语句:将pdv 中数据输出到SAS 数据集后,返回到data 步开头,执行下一次循环。
data 步结尾(;或run;):缺省形式,也是必须语句,否则DATA 步不完整。
相当于一个放在data 步结尾处的return 语句。
注:当一个DATA 步中含有OUTPUT 语句时,当执行到语句output 时才输出PDV 中的数据,data 步结尾处的默认输出不起作用。
4)退出SAS 数据步:stop 语句和abort 语句;其作用是退出DATA 步,并丢掉PDV 中的数据。
data aa; input ss pay; if _error_ then delete ; pi=constant('PI');/*常数pi*/ format pi 15.13; e=CONSTANT('e');/*常数e*/ datalines ; 111 100 aaa 200 444 300 run ; proc print ;run ;结果相同(只读取了第一条观测),左边在LOG 窗口显示一个提示,右边则显示一个出错信息注:abort<return|abend>,退出SaS 系统(与正常退出相同,有相关提示)。
5)DA TA 步的短路: IF expression ;(子集IF 语句):若表达式是假,系统立即返回到DATA 步开头,继续执行下一条观测,且不处理当前观测。
2014.5.17 data语句(通过data语句简单输入数据)data a.k;input total math chineseenglish;cards;243 80 81 82246 81 82 83249 82 83 84;procprint;run;结果如图:注:data a.k;input total; math; chinese; english;/*当输入变量名中含有;时,cards语句要变成cards4 而且在数据下面不再是单个; 而是四个;;;;*/cards4;243 80 81 82246 81 82 83249 82 83 84;;;;procprint;run;结果如图:Data语句中输入符号变量,需在input语句的变量名后面加$符号。
data a.l;input name$ math chineseenglish;cards;张三80 81 82李四81 82 83王五82 83 84;procprint;run;结果如图:如若在input语句后的变量名没有加$符号,但是在数据集中又输入符号变量,则会出现:Input语句后面的变量名如果在变量名的后面再加数字,则表明该变量所占据的列数。
data a.m;input name$ 1-2 math$ chineseenglish;/*表示name变量占据第1,2列,后面同理*/cards;张三80 81 82李四 81 82 83王五82 83 84;procprint;run;结果如图:(一般跟在input语句后面变量名的后面或format语句后面)下面介绍一些常用的格式输入:W. :表示宽度为w位的数字。
W.D :表示带有小数点的标准数字。
例8.2:如-1234.56 。
其中负号和小数点各占一个位。
$W :表示字符串为W位。
Commaw.d:表示与W.D的用法类似,不过在数据输出时数字的格式是美式的,即三个数字之间空格隔开。
实验二SAS编程基础SAS语言和其它计算机语言一样,也有其专有的词汇(即关键字)和语法。
关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS语句,一个SAS程序由若干数据步、过程步组合而成,而每一个程序步通常由若干语句构成。
SAS程序是在Editor窗口中进行编辑,提交运行后可以在Log窗口中显示有关信息和提示,在Output窗口显示运行的结果。
2.1 实验目的通过实验了解SAS编程的基本概念,掌握SAS编程的基本方法,掌握SAS数据步对数据集的管理和对数据的预处理。
2.2 实验内容一、建立逻辑库与数据集,包括逻辑库的建立、直接输入数据建立数据集与读取外部数据文件建立数据集。
二、数据文件的编辑与整理,包括数据集的横向合并与纵向合并、数据集内容的复制、变量和观测的增减与筛选、数据集的拆分和数据的排序等。
2.3 实验指导一、建立逻辑库与数据集1. 建立逻辑库【实验2-1】编程建立逻辑库。
(1) 首先在D盘创建一个文件夹,如D:\SAS_SHIYAN\SASDATA。
(2) 建立逻辑库mylib,编辑并运行下面程序语句即可。
libname mylib "D:\sas_shiyan\sasdata";2. 直接输入数据建立数据集【实验2-2】将表2-1(sy2_2.xls)中的数据直接输入建立数据集sy2_2,并将其存入逻辑库mylib中。
表2-1 职工工资代码如下:data mylib.sy2_2;input bh $ xm $ xb $ gzrq $ zc $ bm $ jbgz glgz jj kk sfgz;informat gzrq yymmdd10.;format gzrq ddmmyy8.;label bh='编号' xm='姓名' xb='性别' gzrq='工作日期' zc='职称' bm='部门'jbgz='基本工资' glgz='工龄工资' jj='奖金' kk='扣款' sfgz='实发工资';cards;3003 王以平男1992-8-1 助工生产620 300 500 0 14203004 林红女1993-8-1 助工供销620 280 500 200 12003005 吕兴良男1982-1-30 工程师技术1100 500 500 100 20003006 司马宇男1971-2-17 工人生产520 720 500 0 17403007 张学武男1967-10-9 工人保卫520 800 500 200 16203008 冯玉霞女1987-8-1 工程师生产1100 400 500 250 17503009 赵大强男1968-5-10 工人财务520 780 500 0 18003010 王萍女1987-8-1 工程师技术1100 400 500 100 1900;RUN;3. 读取外部数据文件建立数据集【实验2-3】读取文本文件sy2_3.txt(图2-2)建立数据集work.sy2_3。
SAS学习笔记——初级数据分析师培训2016-4 TreeAnts 写于长春《SAS编程基础》第一章简介1、运行的操作系统:Windows、UNIX、z/OS(OS/390)2、Foundation SAS 的核心:Base SAS第二章SAS入门1、SAS程序的两个组成部分是:(1)DATA步:通常用于创建SAS数据集(2)PROC步:通常用于处理SAS数据集(生成报告和图表、管理数据和数据排序)2、步边界:SAS程序可以从任意一个DATA语句或PROC语句开始,当遇到以下任何一种情况就算步结束:(1)一个RUN语句(对大多数步来说)(2)一个QUIT语句(对某些程序来说)(3)一个新程序的开始(DATA语句或PROC语句)3、SAS程序运行模式:(1)交互模式:SAS窗口模式、SAS-EG(2)批处理模式:将SAS语句和任何必要的操作系统控制语句放到一个文件中,然后提交这个文件给操作系统。
(3)非交互模式:SAS程序语句存储在一个外部文件里,当你发布SAS命令引用这个文件后,该程序就会立即执行。
4、SAS窗口环境的三个主要窗口:(1)编辑器窗口(F5):包含要提交的SAS程序(2)日志窗口(F6):包含SAS程序的处理信息,包括各种警告和错误信息(3)输出窗口(F7):包含SAS程序所生成的报告第三章SAS语法1、SAS程序:每个SAS程序由若干个程序步组成,每个程序步由若干个SAS语句组成。
2、SAS语句特性:通常以SAS关键字开头,始终以分号结束。
3、SAS语法规则:(1)一个或多个空格或特殊字符可以被用来分隔单词(2)可以在任何列开始和结束(3)单个语句可以延续多行(4)多个语句可位于同一行上4、SAS注释方法:(1)/* comment */(2)* comment ;5、DataLines语句可用于直接读取位于程序的数据,例如:(若存在类似“$ 1-20”表示按定长录入)************************************************************************;data work.NewEmps;input First_Name $ Last_Name $Job_Title $ Salary;datalines;Steven Worton Auditor 40450Merle Hieds Trainee 24025;run;data work.newpacks;input Supplier_Name $ 1-20 Supplier_Country $ 23-24Product_Name $ 28-70;datalines;Top Sports DK Black/BlackTop Sports DK X-Large Bottlegreen/BlackMiller Trading Inc US Expedition Camp Duffle Medium BackpackLuna sastreria S.A. ES Hammock Sports BagMiller Trading Inc US Sioux Men's Backpack 26 Litre.;run;************************************************************************;6、SAS语法错误类型:(1)关键词拼写错误(2)引号不匹对(3)遗漏分号(4)选项无效(5)中英文标点符号混用第四章认识SAS数据集1、SAS数据集:是一个有SAS创建并且处理的文件,分为描述部分和数据部分。
第2章SAS语言的基本概念§2.1 SAS语言概述SAS提供了一种完善的编程语言。
如同大多数计算机高级语言一样,SAS用户只须要熟悉其命令、语句及简单的语法规则就可进行数据管理和分析处理工作。
因此,掌握SAS编程技术是学习SAS的关键环节。
在SAS中,系统具有众多的计算过程,把大部分常用的复杂的数据计算的算法作为标准过程调用,用户仅需要指出过程名及必要的参数即可,这样使得SAS的变成变的十分简单。
SAS程序是SAS语句的有序集合。
以程序的功能将SAS程序划分成多个程序模块(程序段),这些模块分为两类:数据准备模块——数据步(DATA Step)和过程部(PROC Step)。
在一个SAS程序中可以有一个或多个数据步与过程步。
SAS程序的结构和数据流向示意图数据步的作用是把数据源中的数据作为输入,经过加工后输出到一个或多个“SAS数据集”。
过程步是把由数据步建立和产生的数据集中的数据作为输入,调用一个或多个标准过程,经标准过程计算处理后,将结果以清晰的表格或图形方式输出到OUTPUT 窗口中或写入磁盘文件。
简单说:数据步是为过程步准备数据,并将数据放入数据集中;过程步是把指定的数据集中的数据计算处理后并输出结果。
一个简单的SAS程序的如下:data student;input xh$ xm$ yy gs;p=yy+gs;cards;001 aaa 89 91002 bbb 70 88003 ccc 90 92004 ddd 70 87005 eee 85 83proc print;proc means;run;运行结果如下:数据集:OBS XH XM YY GS P1 001 aaa 89 91 1802 002 bbb 70 88 1583 003 ccc 90 92 1824 004 ddd 70 87 1575 005 eee 85 83 168平均数:Variable N Mean Std Dev Minimum Maximum ------------------------------------------------------------------- YY 5 80.8000000 10.0349390 70.0000000 90.0000000 GS 5 88.2000000 3.5637059 83.0000000 92.0000000 P 5 169.0000000 11.7898261 157.0000000 182.0000000§2.2 SAS 常量SAS中有多种常量:数值常量,字符常量,日期、时间、日期时间常量。
SAS编程技术教程
1.SAS编程语言
SAS编程语言的基础是SAS语言,它是一种属于统计分析领域的编程
语言。
它提供了一种高级的工具,可以处理大量的数据,并将它们变成有
用的信息。
SAS语言提供了大量的过程,可以用来查询、聚合和排序数据,还可以用来创建图表和报告。
2.SAS语法规则
3.SAS编程技巧
4.数据可视化
数据可视化是指以图表的形式显示数据。
数据可视化是一种有效的方式,可以帮助快速理解数据的大体趋势,以及任何相关的关系。
5.SAS函数
SAS函数是一组可用于处理数据的特殊命令。
第二章 SAS 编程基础第一节常量、变量与观测值2.1.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。
2.1.2 变量给定特性的数据值的集合组成了变量。
在SAS数据集中,每一个观测值是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。
空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。
SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。
如_N_和_ERROR_等。
2.变量特性SAS变量有两种类型,数值型和字符型。
字符型变量在名后用一“$”号来表示。
除了他们的类型外,S A S变量还有下列特性:长度、输入格式、输出格式和标记。
变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。
缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。
变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。
例如:DATA A;C='BAD';PUT C;C='GOOD';PUT C;RUN;C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。
PUT语句的作用是把变量的值输出到LOG窗口。
变量的其他特性将在后面逐渐介绍。
3.变量清单的简化表示在SAS程序中定义了完整的变量清单后,就可以在后面许多语句中使用缩写变量清单形式。
名称形式缩写意义形如:X1,X2,…Xn的带有序号的名称X1-Xn 从X1到Xn的所有变量形如 X P A * 的名称范围X-A 从X到A的所有变量X-NUMERIC-A 从X到A的所有数值变量X-CHARACTER-A 从X到A的所有字符变量特殊SAS名称_NUMERIC _ 所有数值变量_CHARACTER _ 所有字符变量_ALL _ 所有变量例如:INPUT NAME $ VARl VAR2 VAR3 VAR4 VAR5 VAR6;也可以写成:INPUT NAME $ VARl一VAR6;注意字符型变量NAME不包含在这个缩写清单中,有序号的变量不必全部列出,这些变量要求类型相同,或全是数值型的或全是字符型的。
4.缺项值当一个变量由于某种原因没有得到(可能没有观测到,或由于数据错误;或由于计算错误),称该值为缺项值(又称缺失值). 在SAS中用“.”表示。
2.1.3 常量SAS常量是一个数,或一个括在引号中的字符串,或者是一个指示固定值的特殊的标记。
S A S常用3种常量:数值,字符,日期,时间或日期时间值。
常量可被用于赋值、求和、IF、SELECT、RETAIN,PUT和ERROR 语句中,或作为特定过程的可选项的值。
1.数值常量数值常量可为正负整数和小数,对于过大和过小的数则用科学记数法表示。
如:1.785E-9即1.785*10-9,对于数值型量的缺项值用“.”来表示。
2.字符常量一个字符常量可由1至200个字符组成。
例如:姓名Zhangli,性别Male等。
字符型缺项值用空格来表示。
3.日期、时间和日期时间常量用单引号括起日期时间值,后面接着用一个D(DATE)、T(TIME)或DT(DATETIME)来表示其类型。
下面是几个例子:.'1JANl980'D.'9:25'T.'9:25:19'T.'18JAN80:9:27:05'DT为了将日期、时间或日期时间值赋给变量,应指出变量的输入格式或输出格式:TIME.、DATE.、和DATETIME.。
第二节 SAS函数SAS函数是一个程序,它对一个或多个参数进行计算后返回一个值。
每一个SAS函数有一个关键字名,为了调用一个函数,写出函数名接着是括在括号中的一个或多个要进行计算的参数:函数名(参数,参数)当参数多于一个时,参数之间应该用逗号分隔,也可写成如下两种形式之一:函数(OF 变量1-变量n)函数(OF 变量1 变量2 变量3)例如下列形式是正确的:SUM(OF X1一X100 Yl—Y100)SUM(OF X Y Z)SUM(X1,X2,X3,X4)2.2.1 算术函数ABS(x) 返回x的绝对值DIM(array) 返回数组中元素个数MAX(X,Y,…) 返回X,Y….中的最大值MIN(X,Y….) 返回X,Y….中的最小值MOD(X,Y) 计算x/y的余项SIGN(x) 返回参数x的符号或OSQRT(x) 计算x的平方根还有LBOUND和HBOUND等函数。
2.2.2 数学函数EXP(x) e的幂LOG(x) 产生自然对数LOG2(x) 计算底为2的对数LOG10(x) 计算底为10的常用对数D I G A M M A(x)计算G A M M A函数对数的导数还有E R F、E R F C、G A M M A、L G A M M A等函数。
2.2.3 三角函数和双曲函数COS(x) 计算余弦SIN(x) 计算正弦TAN(x) 计算正切还有ARCOS、.ARSIN、ARTAN、COSH、SINH、TANH等函数。
2.2.4 概率函数PROBBNML(p,n,f) 二项式(BINOMIAL)概率分布函数;PROBCHI(x,df) 卡方概率分布函数PROBF(x,ndf,ddf) F分布函数PROBNORM(x) 标准常规概率分布函数PROBT(p) STUDENT'S T分布函数还有POISSON,PROBBETA、PROBGAM、PROHYPR、PROBNEGB等函数。
2.2.5 分位数函数CINV(p,df,nc) 卡方分布分位数FINV(p,ndf,ddf,nc) F分布分位数TINV(p,df,nc) T分布分位数还有BETAINV、GAMINV、PROBIT等函数。
2.2.6 样本统计函数MEAN(x,y...) 计算算术均值STD(x,y,...) 计算标准差SUM(x,y,...) 计算参数和VAR(x,y,….) 计算方差还有CSS、CV、KURTOSIS,MAX,MIN,N,NMISS,RANGE、SKEWNESS、STDERR,USS等函数。
2.2.7 随机函数RANNOR(x) 产生一正态偏差RANUNI(x) 产生一均匀偏差还有NORMAL,RABIN,RANCAU、UNIFORM、RANEXP,RANGAM、RANPOI、RANTBL、RANTRI等函数。
2.2.8 字符函数INDEX(a,b) 求字符串b在字符串a中的位置LEFT(a) 左对齐一个字符串LENGTH(a) 返回字符串a的长度。
RIGHT(a) 右对齐一字符串TRIM(a) 移走字符串尾部的空格还有BYTE、COLLATE、COMPRESS、INDEXC、RANK、REPEAT,REVERSE、S C A N、S U B S T R、T R A N S L A T E、U P C A S E,V E R I F Y等函数。
2.2.9 日期和时间函数DATE() 返回今天日期作为SAS日期值DAY(date) 从SAS日期值返回月份中的日数YEAR(date) 从SAS日期值返回年数还有DATEJUL、DATEPART、DATETIME、DHMS、HMS、HOUR、INTCK、INTNX、JULDATE、MDY、MINUTE、MONTHQTR、SECOND、TIME、TIMEPART、TODAY、WEEKDAY、YYQ等函数。
第三节SAS操作符S A S操作符是表示需要作算术计算、比较或者逻辑操作的记号。
2.3.1算术操作符算术操作符指出一个要执行的算术计算。
算术操作符是:* * 乘方 * 乘/除 +加 -减对于一个算术操作符的操作数若为缺项值,结果也为缺项值。
2.3.2 比较操作符比较操作符要求SAS确定两个数据量间是否存在这种关系。
如果不存在(换句话说如果它是假的)其结果值为0。
比较操作符是:=或EQ 等于 ^=或NE 不等于>或GT 大于 <或LT 小于>=或GE 大于等于 <=或LE 小于等于对字符值比较也与数值比较一样,比较总是输出一个数值结果(1或0)。
字符操作数被从左到右一个字符一个字符地按ASCII码值进行比较。
比较算符主要用于条件语句中,但也可用于赋值语句中,例如:IF X<Y THEN C=15;ELSE C=12;可写成:C=15*(X<Y)+12*(X>=Y);2.3.3 逻辑操作符逻辑操作符也叫布尔算符。
它通常用在连接一系列比较表达式中。
符号如下:& AND | OR ^ NOT如果A N D两端都为真,那么A N D操作的结果是1。
例如表达式:A<B & C>0仅当A<B为1(真)和C>0为1(真)时,也就是当A小于B,且c为正时,该表达式为真(值为1)。
如果OR两端至少有一个为l(即为真),那么OR操作的结果为1(真),否则OR操作结果为0值。
例如表达式:A<B | C>0只要两个关系中有一个成立时其值即为真。
2.3.4 其他操作符这些操作符是 >< (MIN),<> (MAX)和 || (连接)>< 和<>算符放在两个量之间,其结果如果用的是><则取其中最小值,如果用的是<>则取其中最大值。
例如,如果A<B那么A><B 的值为A。
||算符联接两个字符值。
例如,如果变量COLOR的值是'RED',同时变量NAME的值为‘BAG’,那么:M=COLOR ||NAME;M的结果值是RED BAG。
如果在连接前要从各个值中滤掉尾部空格,可使用T R I M函数。
2.3.5 SAS表达式表达式是由一系列操作符和操作数形成的一条指令,它被执行时产生一个结果值。
表达式可以是简单的(仅用一个操作符),或复合的(使用多个操作符)。
下面是表达式的例子:.X+1.3.LOG(Y).PART/ALLL*100.1一EXP(N/(N一1)).AGE<100.STATE='NC'|STATE='SC'·A=B=C在DATA步编程语句中使用表达式,以转换变量,建立新的变量,进行条件处理,计算新值和赋新值。
注意:在操作中,如对数值量进行了字符操作或对字符型数值量进行了数值操作,SAS会自动地进行相应的转换。