收藏 分销(赏)

SAS数据集.doc

上传人:xrp****65 文档编号:9433082 上传时间:2025-03-26 格式:DOC 页数:9 大小:70KB
下载 相关 举报
SAS数据集.doc_第1页
第1页 / 共9页
SAS数据集.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述
SAS数据集 SAS系统使用的数据文件称为SAS数据集。 1. SAS的工作环境与SAS程序的结构 1.1SAS的工作环境 主要有四个窗口: PROGRAM EDIT窗口:用于程序的编写、运行和调试。 LOG窗口:用于监视程序的执行过程,提示程序运行过程的各种信息。 记录了SAS程序运行的全部情况,如程序语句的语法错误,运行中的逻辑错误和警告信息,运行时使用的数据集,建立的库文件,以及运行时间等。 OUTPUT窗口:用于显示程序运行的结果。 显示程序的统计分析结果,还可以在窗口对计算结果进行输入、输出、编辑、修改,以及文件格式的转换等操作。 GRAPH窗口:用于图形展示。 还可以在窗口对图形进行输入、输出、编辑、修改,以及图形格式的转换等操作。 另外, Explorer窗口用于显示SAS库(SAS系统命名的库名与磁盘某文件夹间的关联)及其SAS数据集。 Results窗口用于显示SAS程序运行成功时程序输出结果的目录。 SAS系统还有许多窗口,每个窗口都有其特定功能。根据需要可以关闭窗口,也可以通过主菜单View的下拉菜单打开或切换窗口。 运行程序的方式有: Submit:运行全部程序。 Submit top line:运行程序的前n行。 程序运行后系统自动删除已经运行完毕的语句,运行结果显示在OUTPUT窗口,执行过程的各种信息显示在LOG窗口。程序全部运行完毕后PROGRAM EDIT窗口的内容被清除,如果用户希望继续修改或调试该程序,可通过主菜单Locals项下的Recall text选项重新取出程序。 1.2 SAS程序的结构 SAS程序采用模块化结构,模块之间相互独立,每个模块完成一个任务。模块可分为两种类型:一种类型是数据模块,数据模块以英文单词data作为开始语句。另一种是程序模块,程序模块以proc(即英文单词procedure的前四个字母)作为开始语句。模块中的语句用“;”分隔,同一个语句的不同项之间用一个以上的空格分隔。大多数模块用语句“run;”作为结束语句,也有一些模块用语句“quit;”作为结束语句。在一个程序中可以包含多个数据模块和程序模块,模块的位置是任意的。程序按照语句出现的先后顺序执行。 除了数据模块和程序模块之外,用户还可以使用说明语句定义全程量。说明语句可以出现在程序的开始,或者任意两个模块之间,说明语句定义的量的作用范围是该语句后面的所有模块。 例1是一个SAS程序的例子,程序中包含一个数据模块,两个程序模块。在数据模块中输入了对四个变量s,x,y,z三次观测的数据,即建立了一个包含三个记录的数据文件example。S是字符串变量,x,y,z是数值变量。过程proc的功能是将数据文件example的内容显示在OUTPUT窗口。过程means的功能是计算变量x,y(由var指定的变量)的描述性统计量。 [例1] Data example; Input s $ x y z; cards; A 1 2 3 B 4 5 6 C 7 8 9 run; proc print data=example; run; proc means data=example; var x y; run; 1.3 SAS程序的语法 编写程序时必须遵循所使用的软件的语法规则,SAS程序的语法规则可以归纳为以下几条: 标识符或数据之间至少用一个以上的空格分隔,例如:input s$。 每个语句用分号作为结束标志。 变量名或其他名称最多包含8个符号,并且第一个字符为英文字母,名称中不能有空格,或SAS系统的保留符号,如:“-”,“.”,“,”,“;”,“…”,“$”等。 SAS程序可以处理带有缺失数据的文件,数据缺失值用“.”表示。 SAS程序只处理数值和字符串两种类型的变量,为了和数值变量相区别,输入语句中字符串变量名使用“$”作为后缀。 程序中可以包含注释语句,注释语句以“/*”作为一行的开始符号,表示该行为注释语句。 除数据外,SAS程序不区分英文字母大小写。 1.4 常用的运算符号 名称 符号 例子 加号 + A=X+Y+Z 减号 — B=X-Y-Z 乘号 * C=X*Y*Z 除号 / D=X/Y 乘方 ** E=X**2 等于 = A=X+Y+Z 不等于 ^= B^=X-Y-Z 大于 > C>X*Y*Z 小于 < D<X/Y 大于等于 >= E>=X+Y+Z 小于等于 <= F<=X+Y+Z 属于 IN G IN (X Y Z) 与 &(AND) A<B & B<C 或A<B AND B<C 或 | (OR) B=1|B=2或B=1 OR B=2 非 ^(NOT) ^C=0 或NOT C=0 1.5 系统函数 SAS系统提供了丰富的系统函数,用户可以在程序中直接使用这些函数完成各种计算和处理,从而大大提高工作效率,。 算术函数 三角函数 数学函数 分位数函数 随机函数 概率与密度函数 非中心函数 样本统计函数 截取函数 金融函数 字符函数 日期和时间函数 变量函数位操作函数 特殊函数 外部文件函数 数据集函数 库和目录函数 2. 临时数据集和永久数据集 2.1临时数据集 临时数据集是程序在执行过程中建立的临时数据文件,退出程序以后计算机不保存临时数据集中的数据。 【例2】建立一个临时数据集,存放表1-1中的数据。 Data sale; Input name $ sales region $ type $; Cards; Stafer 9664 east p Young 22969 east p Stride 27253 east p Topin 86432 east c Spark 99210 east c Vetter 38928 west c Curci 21531 west p Marco 79345 west p Greco 18523 west p Ryan 32915 west p Tomas 42109 west p Thalman 94320 south c Moore 25718 south p Allen 64700 south c Steiam 27634 south p Farlow 32719 south p Smith 38712 south p Wilson 97214 south c Run; Data语句是数据模块的起始语句,data后面跟随的是创建的数据集的名字,这个例子建立的临时数据集的名字是sale。 Input语句说明要输入的数据项,或者称为变量。变量名之间用空格分开,这个例子中有四个变量name,region,type,sales,除了sales外其余的变量都是字符串类型,所以变量名后要加后缀$。 该数据集中包含对四个变量name,region,type,sales的18次观察值,也可以说包含18条记录。 Cards语句用来说明它的后面跟随的是数据。 Run语句是过程结束语句。 这个程序建立了临时数据集sale。程序运行结束后,sale将不复存在。观察这段程序可以看到,这个程序把要处理的原始数据放在程序内部。当数据量很小时,这种写法很方便。但是,当数据量很多,程序结构就不清晰,会给程序的调试带来不便。另外,数据放在程序内部的做法,使得这些数据只能供一个程序使用,限制了数据的使用范围,不利于数据的共享。因此,当数据量大时,应该建立永久数据集。 2.2 永久数据集 SAS永久数据集是以文件的形式存储在磁盘上的数据文件。使用永久数据集时,除了要说明数据集的名称外,还要说明数据文件在磁盘上的位置,即文件的路径。下面利用表1-1中的数据建立永久数据集。 【例3】建立一个永久数据集 Libname path “a:mydir”; Data path.sale; Input name$ sales region$ type$ @@; Cards; Stafer 9664 east p Young 22969 east p Stride 27253 east p Topin 86432 east c Spark 99210 east c Vetter 38928 west c Curci 21531 west p Marco 79345 west p Greco 18523 west p Ryan 32915 west p Tomas 42109 west p Thalman 94320 south c Moore 25718 south p Allen 64700 south c Steiam 27634 south p Farlow 32719 south p Smith 38712 south p Wilson 97214 south c Run; Libname是一个说明语句,说明在后面程序中使用path代表磁盘目录a:\mydir,程序使用的数据文件存储在该目录下。 Data path.sale说明了一个名为sale的永久数据集,永久数据集的名称包含两部分,前一部分是我就路径,后一部分是文件名,中间用“。”号分隔。 Input语句结尾的@@表示一个数据行包含多个记录,当数据较多时用这种格式输入数据比较方便。 2.3 使用过程建立永久数据集 SAS系统还提供了交互式建立永久数据集的工具。下面我们使用SAS/FSP模块提供的过程FSVIEW来建立永久数据集。 【例4】使用过程FSVIEW来建立永久数据集 Libname path ‘a:\mydir’; Proc fsview new=path.f; Run; 运行上面的程序后,将进入FSVIEW工作窗口,该窗口包含内容如下: Name type length label format (informat) 用户可以在这个窗口中完成数据集的定义工作,具体的定义方法是: 在name下定义数据集中使用的数据项的名称。 在type下定义数据项的数据数据类型,输入N表示数值类型,输入$表示字符串类型。 在length下定义数据的长度,缺省值为8。 在lable下定义数据显示的标号。 在format下定义数据的输出格式。 在informat下定义数据的输入格式。 使用FSVIEW过程还可以编辑已经建立的SAS数据集,例如,执行下面的程序后将进入数据集a:\mydir.f的编辑界面,在编辑界面可以进行数据录入和修改操作。 【例5】使用FSVIEW过程编辑已经建立的SAS数据。 Libname path’a:\mydir’; Proc fsview data=path.f; Run; 3. 使用非SAS格式的数据文件 在SAS系统中可以使用其他应用软件建立的数据文件,由于这些数据文件的存储格式和SAS数据文件的存储格式不同,所以使用前应利用SAS系统提供的数据转换程序进行处理。下面介绍最常见的文本格式的数据文件的使用方法,其他数据格式文件的转换方法请参阅有关的SAS手册。 【6】从文本格式的数据文件sale.dat读取数据,建立SAS数据集。 Data sale; Infile ‘a:\mydir\sale.dat’; Input name$ sales region$ type$; Run; Infile语句打开存储在a:\mydir目录下的文本格式的数据文件sale.dat。 Input语句读入数据。 注意:原始数据文件中每行应包含四个数据项,数据之间用空格分隔。 4. 数据的修饰 数据的修饰包括新变量的生成,对数据文件进行投影、筛选、连接等操作。对数据文件进行修饰可以得到满足分析需要的数据。 4.1 赋值语句 使用赋值语句可以为变量赋值,生成新的数据项。SAS系统提供了丰富的函数,在赋值语句中可以充分利用这些函数对原始数据进行加工,生成新的数据项。 【例7】输入x,y,z三个变量的观测数据,并生成新的变量s。 Data a; Input x y z; S=x+y+z; Cards; (略) Run; 上边的程序每输入变量x,y,z的一次观测,就计算一次x+y+z,并把结果赋给s,程序最终建立了包含x,y,z,s 四个数据项的临时数据集a。 【例8】输入变量x,y,z,计算x^2+y^2+z^2的平方根,并将计算结果赋给变量r。 Data a; Input x y x; R=sqrt(x*x+y*y+z*z); Cards; (略) Run; 【例9】利用条件语句和赋值语句建立新变量。 Data sale; Input name$ sales region$ type$; Select; When(sales<20000) group=10000; When(20000<=sales<40000) group=30000; When(40000<=sales<60000) group=50000; When(60000<=sales<80000) group=70000; Otherwise group=90000; End; Cards; (数据同表1-1) Run; 这段程序利用赋值语句建立了一个变量group,它是对变量sales进行分组后的组中值。 Select语句称为多路分支语句,它的工作方法是先计算when后面的条件语句,如果条件语句的值为真,则执行条件语句后面的内容,然后跳转到end语句。为假,则执行otherwise后面的语句。 Select语句的另一种用法为: Select 表达式; When (值或表达式)语句1; …… When (值或表达式)语句n; Otherwise 语句; End; 如果select后面表达式的计算结果等于某个when语句后面的值或表达式结果,则程序执行该语句对应的语句,然后跳转到end语句。如果所有when语句的值或表达式的计算结果均不等于select后面表达式的计算结果,则程序执行otherwise后面的语句。 4.2 数据项投影 SAS系统提供的对数据项进行投影操作的语句有keep和drop。下面两段程序功能相同,都是建立数据集b时,只保留x和y数据项。 【例10】建立数据集b,只保留x和y数据项。 Data a; Input x y z; …… Run; Data b (keep=x y); Set a; Run; 【例11】建立数据集b,并从中删除数据项z。 Data a; Input x y z; …… Run; Data b; Set a; Drop z; Run; 语句set a 说明将数据集a中的数据连接到数据集b的末尾。 Keep选项指示程序在连接时只保留数据项x和y。 Drop语句说明程序在连接后从数据集b中删除数据项z。 4.3 记录的筛选 SAS系统提供了对文件进行筛选操作的语句。下面是对记录进行筛选的例子。 【例12】从表1-1中所列的销售类型为c的记录。 Data sale; Input name$ sales region$ type$; If type =‘p’then delete; Cards; (数据同表1-1) Run; 这段程序每输入一条记录就判断本次观测的机器类型是否为p,如果是删除这次观测,最终程序建立的数据集sale中只有机器类型为c的记录。 If是判断语句,if后面是条件,当条件为真时,程序执行then后面的语句。If语句的另一种结构为if<条件>then<语句1>else<语句2>,当条件为真时,程序执行语句1,否则执行语句2. Delete是删除语句,执行一次delete语句,数据集的当前记录被删除。 下面的程序根据表1-1建立了两个数据集,sale1中包含销售类型为打印机的有关记录,sale2中包含销售类型为计算机的有关记录。 【例13】分别建立包含销售类型为计算机和打印机的数据集。 Data sale1 sale2; Input name$ sales region$ type@ ; If type =’p’then output sale1 ;else output sale2; Cards; (数据同表1-1) Run; Output 语句的功能是将当前记录连接到指定数据集的末尾。 4.4 连接数据集 根据分析的需要,可以将多个数据集横向或纵向连接为一个数据集。连接可以是垂直连接,也可以是水平连接。 4.4.1 垂直连接数据集 垂直连接是将一个数据集中的数据连接到另一个数据集的末尾,完成垂直连接的语句为set。下面是完成数据集a和b的垂直连接的一个例子。 【例14】已经存在两个数据集a和b,它们的内容如下: 数据集a中的数据为: 数据集b中的数据为: 6 9 mouse 1 5 mouse 1 2 print 6 3 computer 2 7 scaner 执行下面的程序, Data a; Set b; Run; 运行后数据集a中的内容变为: 6 9 mouse 1 2 print 2 7 scane 1 5 mouse 6 3 computer 【例15】使用set语句,利用数据集a,b建立永久数据集a:\mydir.c。 Libname path ‘a:\mydir’; Data path.c; Set a b; Run; 4.4.2 水平连接数据集 使用merge语句可以水平连接两个数据集。连接数据文件时特别要注意两个文件记录之间的对应关系。 【例16】表5和表6表示数据集a和b,它们分别记录了学生的专业和家庭收入情况,将它们连接成一个新的数据文件。 表5 学生专业情况 表6学生家庭收入情况 学号 姓名 专业 班级 学号 家庭收入 家庭人口 34200 miaojing xinxi 8701 34108 3500.00 3 35012 wangmin tongji 2001 34200 6200.00 4 35228 dinghui xinxi 8701 34228 2400.00 4 35618 wangjian tongji 9019 35618 1500.00 3 36120 liufang jinrong 2006 36120 1800.00 3 36336 lanrui jinrong 2006 36336 2700.00 3 使用下面的程序连接表5和表6生成新的数据集,见表7. Data a; Merge a b; Run; 新数据集的内容如表7所示。 学号 姓名 专业 班级 家庭收入 家庭人口 34200 miaojing xinxi 8701 3500.00 3 35012 wangmin tongji 2001 6200.00 4 35228 dinghui xinxi 8701 2400.00 4 35618 wangjian tongji 9019 1500.00 3 36120 liufang jinrong 2006 1800.00 3 36336 lanrui jinrong 2006 2700.00 3 4.5 使用修饰数据 5.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服