第二章SAS语言基础.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章SAS语言基础

第二章语言基础(程序结构、数据类型、表达式与语句) 如果你曾经学过一门语言的话,就应该知道语言基础这里会讲些什么内容了。其实各种语言的语法套路是差不多的,无非就是数据类型、变量、常量、运算符、流程结构、函数以及输入输出等。 第一个SAS程序(SAS program)title My first SAS program; data temp; input group $ x @@; cards; A 54.0 B 50.2 A 56.6 B 53.8 A 57.3 A 51.2 … ; proc ttest data=temp; var x; class group; run; 这个程序是用t检验来检验6-7岁的城市儿童与农村儿童的胸围是否不同。SAS程序中,每一行以分号(;)结尾的称为语句,语句是SAS程序最基本的单位,这跟其他语言是一致的。SAS程序的层次是非常清楚的,因为它是模块化的。每一个SAS程序是有若干个语句组成,看起来可能非常复杂松散,而实际上SAS程序是两个模块化的结构构成即数据步和过程步,以及一些设置环境变量的全程语句。上面程序中,第一个语句是标题语句,也即是全程语句。data语句到第7行单独的分号被称为数据步,proc语句到run;语句被称为过程步。而且有些语句是专用于数据步的,比如input语句和cards语句;而有些语句是专用于过程步,如var语句和class语句;还有些语句是可以单独放在任何位置,称为全程语句。 1.1 程序结构:数据步(Data step):用来创建和修改用于统计分析的数据集,实现基础的编程功能;每个data步以data语句开始,可以包含任意多个SAS程序语句。过程步(Proc step):利用已创建的数据集完成特定的统计分析任务、结果输出及部分数据集整理功能。proc步以proc语句开始,数据集作为输入;其他语句给出用户想得到有关结果的更多信息的程序语句,这些语句依赖于用户调用的具体的过程。数据步只要求以data步开始,没有其他限制;而proc步则更像一个模板,每一个过程有确定可用的语句,用户根据需要往上面填写。所以,说到SAS编程,大多的技巧和艺术都集中在数据步,过程步几乎没有任何的技巧可言,过程步应用的好坏一方面取决于你前面数据处理的好坏,另一方面取决于用户的统计基础。 数据步的自循环(Data steps Built-in Loop): data a ; put x= y= z= ; input x y ; z=x+y ; put x= y= z= ; cards ; 10 20 100 200 ; run ; 运行后在LOG窗口显示如下记录: …… X=. Y=. Z=. X=10 Y=20 Z=30 X=. Y=. Z=. X=100 Y=200 Z=300 X=. Y=. Z=. NOTE: The data set WORK.A has 2 observations and 3 variables. 这个程序的运行流程是这样的: ⑴ DATA语句标志了数据步开始,并指定了数据步结束时要生成的数据集名字为A(实际是WORK.A)。 ⑵第一个PUT语句要输出变量X、Y、Z的值,但它们还都没有定义,所以LOG窗口的结果显示为三个缺失值. ⑶下面是INPUT语句,它从CARDS语句后面的数据行中读取变量X的值10,变量Y的值20。 ⑷下一个赋值语句计算变量Z的值得到30。因此,LOG窗口中的第二行输出显示三个变量的值分别为10、20、30。 ⑸从CARDS语句开始到空语句(;)的各行是非执行的,程序运行到RUN语句,发现这是本数据步的最后一个语句,按一般的程序语言的规则,程序到这里就应该结束了,程序中的第二行数据100 200就不能被读入。 但SAS是一个专用的数据处理语言,所以,这个程序运行到RUN语句后,先把读入的观测(这是第一个观测)写入输出数据集;并继续执行下面步骤。 ⑹又返回到DATA语句后的第一个可执行语句开始执行,并先把所有的变量置初值为缺失值。于是第一个PUT语句的结果显示三个变量均为缺失值,而不是上一步的10、20、30。 ⑺下一个INPUT语句从数据行中读入下一个观测,把变量X、Y赋值100、200。读取位置由运行时设置的一个数据指针指示。然后计算变量Z的值得300。 于是PUT语句输出的X、Y、Z值分别为100、200、300。 ⑻然后,运行控制跳过CARDS语句到空语句,到数据步结尾,把第二个观测输出到数据集。 ⑼再返回到数据步开头,把变量值赋初值为缺失值,所以第一个PUT语句输出的三个变量值为缺失值。 ⑽然后运行到IN

文档评论(0)

jiulama + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档