sas数据整理(professional)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SAS语言——数据步、过程步以及结构性语言介绍目录•数据步•结构化语句介绍•过程步•数据集的管理和引用•全程语句•附录基础知识:•程序一般结构•语法基本规则•常用符号表程序的一般结构data库名.数据集名;input变量名;cards;……;run;proc过程名;属性;var变量;run;DATAStep数据步PROCStep程序步语法的基本规则•一般以data或proc开头,以run结尾;•以;分割语句,以/*注释内容*/添加注释;•一个语句可写多行,一行也可写多个语句;•允许一个空格的地方可以用多个空格;•变量变换及运算在Data步完成,具体如下:input变量名;New_various=公式;cards;•程序颜色:过程名为加粗深蓝色,过程选项为浅蓝色,引用为紫色,注释为绿色,关键字及变量名等皆为正常黑色。运算符•此外还有一般的算术运算符+,-,*,/,**,以及括弧,为避免搞错优先级可使用括弧。比较运算符等价表达逻辑运算符等价表达=Eq&And^=Ne|OrGt^NotLt逻辑运算符=Ge||连接字符串=LeabMax(a,b)in例如:cityin(‘北京’,’上海’,’天津’,’太原’)一、数据步•数据步以DATA语句开始,用于创建和处理数据集。•最常用的语句有:DATA语句INFILE语句INPUT语句ARRTIB语句赋值语句PUT语句CARDS语句OUTPUT语句SET语句数据步示例dataa;inputx;/*字符+$,连续读入+@@*/cards;323544565;run;procprint;run;1、DATA语句•主要功能:标志数据步的开始,命名将要创建的SAS数据集。•一般形式:DATA数据库标识.数据集名;•说明:如省略库标识名,则默认为work临时库2、INFILE语句•主要功能:确定一个包含原始数据的外部文本文件,并读入数据。•一般格式:infile“外部文件的所在位置及名称”选项;•说明:必须出现在INPUT语句之前。3、INPUT语句•用于向系统表明如何读入每一条记录。它的主要功能有:–读入由语句指定的数据列。–为相应的数据域定义变量名。–确定变量的读入模式。•格式:input变量名[变量类型起止列数]...;•字符变量+$,连续读入+@@。INPUT语句自由格式要求input变量名;称为自由格式。•数据每一行为一个观测,各观测值之间有一个或几个空格或制表符分隔;•无论是数值型还是字符型缺失数据必须用小数点表示;•字符型数据长度不能超过8个字符,不允许完全空格或中间有空格,开头和结尾的空格忽略;•在input语句中必须列出观测中的每一项数据对应的变量名而不能省略中间某一个。INPUT语句列格式要求input变量名$1-10;称为列格式。•数据行各列必须对齐,正确数出各列所占位数;•字符型数据长度可以超过8个字符,中间可以有空格,开头和结尾的空格忽略;•指定位置为空白时视为缺失值;•可以只输入数据行中的某些而忽略其他项,例如:对身份证号,可以分出年月日三个变量,即inputyear7-10month11-12date13-14;INPUT语句格式化输入日期的格式化输入。•inputdateyymmdd8.sales;•formatyymmdd10.;•inputsalesdate:yymmdd8.;•formatyymmdd10.;1、日期在前读入8位输出10位2、日期在后4、变量属性与ATTRIB语句•字符型或数值型:由$区别。•变量标签(label):不超过40个字符或20个汉字。•变量存储长度(length):默认8字节。•变量的输入格式(informat):如何转化外部数据。•变量的输出格式(format):如何显示。Attrib语句格式:attrib变量名属性变量名属性……;ATTRIB语句示例dataclass.format;attribnamelabel=姓名length=$10datelabel=日期format=yymmdd10.informat=mmddyy10.amountlabel=金额format=10.2;inputname$1-10dateamount;cards;张鹏10/15/19982000李志明1/3/991500王敏11/5/993000;procprintnoobslabel;run;5、赋值语句赋值语句格式变量名=表达式•例如:•avg=(math+chin)/2;•isfem=(sex=‘女’);•y=sin(x);•newv=.;说明•data语句中使用•通过已有变量计算得到新变量•赋0,1值•赋缺失值6、输出语句PUT输出语句格式put变量名字符串;•例如:•x=0.5;y=sin(x);•putsin(x)=y;•putx=y=;putxy;•putx10-20.6;说明•data语句中使用,不能为数值和表达式,结果在日志窗口输出。•“x”中必须有空格,不然就把x当做字符,原型输出。•输出x和y的值。•指定在10-20列输出,保留6位小数PUT语句示例•dataclass.yunsuan;•x=0.5;•y=sin(x);•putsin(x)=y;•putxy;•putx=y=;•putx10-20.6y30-40.6;•putx20.8y20.8;•run;PUT语句的其它说明输出语句格式putname$10;putname@;fileprint;file‘文件名’;file“路径;说明•指定输出字符型变量的宽度;•不换行输出;•在output窗口输出,put语句前使用;•保存在当前工作环境目录下;•保存在指定目录下。7、CARDS语句•主要功能:用于直接输入数据,标志着数据块的开始。•格式如下:cards;123;•cards=datalines8、其它语句•output语句:将所读入的数据存放在缓存中,也可用其强制输出一条新记录•set语句:对数据集中的数据进行编辑,也可将指定数据集的内容复制到新建数据集中二、结构化语句介绍每一种结构化语言编写的程序都由顺序、分支、循环三种结构构成,SAS语言也不例外。在这里简要介绍一下分支和循环语句的语法。这些语句均可直接在数据步和程序步中使用,适当地使用它们可以大大简化我们的工作。1、分支结构(1)If语法格式:if条件then程序块;else程序块;注意:1、没有结束语句;2、else语句可以省略;3、可嵌套其它语句和循环结构。示例•datatemp;•inputxy@@;•ifx50thenclass=1;•elseclass=2;•cards;•345678903567891023657745•;•procprint;•run;•数据步开始,定义要建立的数据集为work库的temp•要输入的变量为x和y,并且采用数据连续读入方式•建立新变量class,如果x50,则class=1•否则,class=2•数据块开始•数据块•数据块结束•列表输出数据集中的数据,检查有无错误•程序结束,开始运行以上程序数据步流程说明为什么可以这样写?在这里有必要解释一下数据步的执行过程,input语句按变量顺序将数据读入内存缓冲区,直至每一个变量都有值相对应。然后数据步继续向下执行,从而其它语句可以修改内存缓冲区,如修改值、增加变量等,在执行到数据步结束后,程序又回到input语句处继续执行,直到数据读完为止。if…thendo…end句型•如果then后要执行多个指令,则使用:if表达式thendo;语句1;语句1;……;end;(2)Select语句•语法格式之一:select(选择表达式);when(值列表)语句;when(值列表)语句;……;otherwise语句;end;•语法格式之二:select;when(条件)语句;when(条件)语句;……;otherwise语句;end;Select示例1•inputmonth$1-10season$;•select(month);•when('February','March','April')season='Spring';•when('May','June','July')season='Summer';•when('August','September','October')season='Autumn';•otherwiseseason='Winter';•end;Select示例2•select;•when(season='Spring')season1='春季';•when(season='Summer')season1='夏季';•when(season='Autumn')season1='秋季';•otherwiseseason1='冬季';•end;•本语句还可以生成新的变量,如上season1。2、循环语句(1)计数do循环语句•该语句主要用于建立数据集。语法格式:do起始条件to终止条件by步长;循环体语句;end;可使用leave跳出循环,使用continue结束本轮循环转入下一轮。示例•datatemp;•doclass=1to2;•inputxy@@;•output;•end;•cards;•345678903567891023657745•;•run;•数据步开始,定义要建立的数据集为work库的temp•循环开始,控制变量为class,取值从1到2•要输入的变量为x和y,并且采用数据连续读入方式•用output语句将循环控制变量写入数据集中•循环结束•数据块开始•数据块•数据块结束•程序结束,开始运行以上程序(2)当型while循环语句•语法格式:dowhile循环继续条件;循环体语句;end;•先判断“循环继续条件”是否成立,成立时执行“循环体语句”。(3)直到型until循环语句•语法格式:dountil循环退出条件;循环体语句;end;•先执行“循环体语句”,然后判断“循环退出条件”是否成立,成立则结束循环。三、过程步SAS的程序步(也称过程或过程步)就是已经编好了的用于数据整理和统计的计算机程序,你只需要调用它们就是了。程序步总是用一个PROC语句开始,后面紧跟着程序步名,用以区分不同的程序步。以下是一些常用的程序步的名称及功能:1、常用过程步程序步名功能PRINT将数据集中的数据列表输出SORT将指定的数据集按指定变量排序CHART绘出低分辨率的统计图GCHART绘统计图FREQ对指定的分类变量进行简单的统计描述UNIVARIATE对指定的数值变量作详细的统计描述MEANS对指定的数值变量进行简单的统计描述TTEST对指定的变量做T检验NPAR1WAY对指定的变量做非参数检验常用过程步(续)程序步名功能REG对指定的两个以上变量做回归分析CORR对指定的两个以上变量做相关分析GLM拟合一般线性模型LOGISTIC拟合Logistic回归模型PHREG拟合cox比例风险模型ANOVA对指定的变量做方差分析2、过程的最简化结构proc过程名;该过程的专用语句描述;run;•简化结构下的执行规则:1.处理最新建立的SAS数据集。2.处理所有的变量(或对一个计算过程来说处理全部数值变量)。3.一次处理整个数据集而不是某个子集。示例1、输出最近的数据集•procprint;•run;2、对最近数据集排序•procsort;•by变量名;•run;3、过程的一般结构proc过程名[data=数据集名][选项];该过程的专用语句描述;[var变量序列;][where条件表达式...;][by变量序列;][……;]run;4、常见的过程选项•noprint禁止统计报告在output视窗中输出•plot绘出茎叶图、箱式图和正态概率图5、过程的可选择语句1.DATA语句用于指明所需要处理的数据集,如果缺省的话使用最近生成的数据集。形如:data=class.a;2.VAR语句指定分析变量或变量列表:形如:

1 / 73
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功