第三课SAS数据集
- 格式:pdf
- 大小:239.22 KB
- 文档页数:5
SAS 编程及应用------SAS数据集的建立SAS数据格式v 观测(Observation)1.描述被观测对象的单一整体(如个别人、一个实验动物等)某些特性的一系列数据值称为一个观测,又称为观察。
在SAS数据集中每一行数据是一个观测。
v 等同于数据库中的一条记录v 变量(Variable)1.变量指定了数据的某一特性。
在SAS数据集中,每一个观测是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
v 变量的命名1.最多32个字符长,第一个字符必须是字母或者下划线,不能有空格。
特殊字符(如$,@,#)也不允许在SAS名中使用。
合法变量名如:A A1 abc name age total …;2.SAS系统保留的特殊变量名,以下划线开始和结尾。
如:_N_和_ERROR_等。
v 变量的特性1.名称、类型、长度、输入格式、输出格式和变量描述;2.两种类型:数值型和字符型;3.长度特性:是指存贮的字节数。
缺省长度是8(为了存贮长度与缺省值不同的变量,需使用LENGTH语句)。
v 缺失值1.当一个变量由于某种原因没有得到(可能没有观测到,或由于数据错误,或由于计算错误),称该值为缺失值;2.在SAS中数值类型的缺失值用“.”表示;3.字符类型的缺失值为“”(空格)表示。
v 常量1.SAS常量为值固定不变的量;2.常量分为以下三类;•数值常量:1.5 -2.79 1.75E-5;•字符常量:“Hello”‘ABC’“Zhangli”;•日期、时间、日期时间常量:后接D,T,DT。
‘1JAN2000’D‘9:25:19’T‘1JAN2000:10:30:05’DTv SAS数据集1.SAS数据集是SAS过程的数据基础。
可以从外部数据读进来,转变成SAS数据,也可以自己输入产生;2.可以是临时的,或永久的;3.数据集含两部分内容:• 描述部分:数据名称、类型、长度、格式等• 数据部分:包含实际数据值4.SAS数据值被安排在一个矩阵式的表状结构中。
第三章利用窗口菜单操作和建立SAS数据集第一节利用Viewtable浏览SAS数据集一、如何打开Viewtable窗口三种方法:一是在浏览器窗口,双击需要打开的数据集图标;二是在命令框键入vt.dst.bclass;三是按照菜单操作如下:然后打开需要的数据集即可。
二、表格(Table View)和表单(Form View)显示表格(Table View)表单(Form View)三、获得Viewtable的帮助在Viewtable窗口执行下列操作:四、浏览和编辑模式浏览模式编辑模式五、查看表及变量的属性(一)表的属性(二)变量的属性(三)用标签显示表头结果如下:(四)用变量名显示表头结果如下:(五)改变列显示的宽度在Viewtable窗口,当光标在灰色的行或列表头栏移动时,光标移至栏的分隔线时,光标会变为一个双向箭头,这时按下左键拖动鼠标就能改变分隔线的位置,改变某一列的宽度或所有行的高度。
(六)隐去某些列(七)改变变量显示的次序1. 可以采用鼠标拖动表头;2. 按如下操作(八)在移动中固定左侧的列(九)用Where语句选择部分观测进行浏览第二节利用Viewtable修改与输出SAS数据集一、按某个变量的值进行排序首先进入表编辑模式,然后二、修改单元格的内容进入表编辑模式,单击某单元格,则该单元格高亮显示。
如下所示。
三、加入新的一行四、复制行五、删除已有的行六、打印输出七、输出为HTML文件第三节用Viewtable建立新的SAS数据集一、用Viewtable打开空白表键入命令vt或vt new=temp或者用如下菜单方式:二、设定变量属性三、输入数据四、利用已有表的属性建立新的数据集首先,通过键入命令vt new=temp或按如下操作打开一个空白表:然后五、以现有的表为基础新建数据集打开一个空表,然后六、SAS的其它屏幕编辑工具1. Analyst(分析员应用程序)2. Insight(交互式应用程序)第四节利用Import菜单转换外部文件为SAS数据集一、进入Import菜单二、使用导入菜单下面以将某个excel文件转换为SAS数据集为例说明。
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.2SAS程序的结构SAS程序采用模块化结构,模块之间相互独立,每个模块完成一个任务。
模块可分为两种类型:一种类型是数据模块,数据模块以英文单词data作为开始语句。
另一种是程序模块,程序模块以proc(即英文单词procedure的前四个字母)作为开始语句。
模块中的语句用“;”分隔,同一个语句的不同项之间用一个以上的空格分隔。
目录SAS 数据集操作2014年03月28日1.合并2.删选,修改3.查询PPT 模板下载:/moban/1数据集的合并:(1)纵向合并:添加或合并样本变量(2)横向合并:添加或合并(指标)变量(1)数据集纵向合并:可以添加或合并样本变量形式:data 合并后数据名;set 数据名1 数据名2 ;run;例:将名为male、female 的两个数据集纵向合并成一个名为total 的数据集data total;set male female;proc print data=total;run;/*若male 与female 变量名不同则total 的变量名为两者之并,数据值以缺失值形式出现*/(2)数据集横向合并:添加或合并(指标)变量形式:data 合并后数据名;merge 数据名1 数据名2 ;by 共有变量名;run;例:将名为dataONE 和data TWO 的两个数据集按共有变量pid 横向合并成数据集total2(以下程序以data total2 名义保存)data one;input pid sex$ age; cards;101 m 54105 w 36102 m 43104 w 45;data two;input pid weight height; cards;105 54 163102 63 174103 57 173104 45 156;proc sort data=one;/*必须先对共有变量(本例中pid)分别排序才能横向合并*/by pid; /* 排序语句proc sort data=被排序变量所在数据集名; by 被排序变量名;排序时默认数值由小到大字母由先而后*/proc sort data=two; /*必须先对共有变量(本例中pid)分别排序才能横向合并*/by pid;/*以下为合并过程*/data total2; /*合并后数据名*/merge one two; /*形式: merge 被合并数据集名1 被合并数据集名2; */注意输出结果中的缺省值,输入数据时若有缺省分量一定要以. 表示,否则SAS 会将该行数据自行删除*/by pid;proc print data=total2;run;2(1)数据集的数据的删选拆分if…then output 选择(或delete 删除)(else output…)例:数据表E25data E26;set E25;/* 注: 调用sas 数据集中数据E25*/if sex=’m’then output;/*等同于if sex=’w’then delete;*/proc print data=E26;run;/*若要拆分成名为male、female 的两个数据集则可用以下方法*/data male female;set E25;if sex=’m’then output male;else output female;proc print data=male female; /*在output 窗口输出名为male、female 的两.个.数据集*/run;经数据删选得数据表E26经数据分拆得数据表male 与female(2)数据集的复制与修改例:C9501.XLS①数据集复制②修改③用UPDATE 语句更新数据集例:UPDATE 语句更新数据集3运用PROC SQL 查询数据用PROC SQL最简单的用法如下:PROC SQL;SELECT 第一项,第二项,......,第n项FROM 数据集WHERE 观测选择条件RUN;按观测条件查询:查询结果排序:联合查询:查询结果转存:THANK YOU2014年03月27日徐洋东。
第三课SAS数据集
一.SAS数据集的结构
SAS数据集是关系型的,它通常分为两部分:
●描述部分——包含了一些关于数据属性的信息
●数据部分——包括数据值
SAS的数据值被安排在一个矩阵式的表状结构中,见图3-1所示。
●表的列称之为变量(Variable),变量类似于其它文件类型的域或字段(Field);
●表的行称之为观察(Observation),观察相当于记录(Record)。
变量1 变量2 变量3 变量4
Name Test1 Test2 Test3
观察1 Xiaoer 90 86 88
观察2 Zhangsan 100 98 89
观察3 Lisi 79 76 70
观察4 Wangwu 68 71 64
观察5 Zhaoliu 100 89 99
图3-1 一个SAS数据文件
二.SAS数据集形式
SAS系统中共有两种类型的数据集:
●SAS 数据文件(SAS data files)
●SAS 数据视窗(SAS data views)
SAS 数据文件不仅包括描述部分,而且包括数据部分。
SAS 数据视窗只有描述部分,没有数据部分,只包含了与其它数据文件或者其它软件数据的映射关系,能使SAS的所有过程可访问到,实际上并不包含SAS 数据视窗内的数据值。
自始自终,在SAS语言中,“SAS数据集”与这二种形式中之一有关。
在下面的例子中,PRINT过程用相同方法处理数据集aaa.abc,而忽略它的形式:
PROC PRINT DATA=aaa.abc
三.SAS数据集的名字
SAS数据集名字包括三个部分,格式如下:
Libref.data-set-name.membertype
●Libref(库标记)──这是SAS数据库的逻辑名字
●data-set-name(数据集名字)──这是SAS数据集的名字
●membertype(成员类型)──SAS数据集名字的这一部分用户使用时不必给出。
SAS 数据文件的成员类型是DATA;SAS 数据视窗的成员类型是VIEW 例如上面例子中的aaa.abc这个SAS数据集名字,aaa是库标记,abc是数据集名字,成
员类型没有写出,应该是DA TA或VIEW中一个。
四.永久的和临时的SAS数据集
SAS的存储方式有二种:
●永久的SAS数据集
●临时的SAS数据集
图3-2 SAS系统的库标记与对应的目录
一个SAS数据集是临时地或者是永久地存在,取决于该数据集所附属的SAS数据库是临时的或永久的。
一般用LIBNAME语句把主机系统下某个目录与库标记联系起来,并用这个库标记作为SAS数据集名字的第一部分(或称第一级),这样规定的SAS数据集是永久的;如果只有第二部分(或称第二级)数据集的名字或库标记为WORK时,这样规定的SAS数据集是临时的。
永久库中的所有文件将被保留,但库标记仍然是临时的。
每次SAS启动时都自动指定两个库标记:SASUSER和WORK。
分别联系目录“C:\SAS\SASUSER ”和“C:\SAS\SASWORK\#TDxxxxx ”。
见图3-2所示。
1对永久SAS数据集的命名
假定你想创建一个数据集名为Class的永久数据集,这个数据集中的观测值和变量定义为图3-1所示。
首先,你要确定Class的数据集在哪里存储,然后使用LIBNAME语句来定义库标记;若选择Study作为库标记,那么在DA TA语句中你应该这样命名SAS数据:
图3-3 创建永久性数据集STUDY.CLASS
libname study 'd:\sas\mydir';
data study.class;
当这个DATA步执行时,名为class的SAS数据集被存储在用库标记Study联系的目录里。
见图3-3所示是创建永久性数据集STUDY.CLASS的程序,注意在第一条LIBNAME语句执行后,将在LIBNAME窗口出现第五个新的库标记“STUDY”和用户自定义联系目录”d:\sas\mydir”。
在这次SAS会话后面的DA TA步或PROC步使用这个数据集时,必须规定两级名字。
例如:
proc print data=study.class ;
如果你想在另一次SAS会话里读这个class数据集,你必需再定义一个库标记。
2对临时SAS数据集的命名
为了创建或读一个临时SAS数据集,通常你只要规定单级名字,即这个数据集名字。
SAS 系统自动地使用WORK作为库标记。
对于开发和检查新程序非常有用,但每次结束SAS后WORK库标记中的所有文件将被删除。
例如,下面语句:
data class;
产生SAS数据集的全名为work.class(或work.class.data,该数据集的成员类型data是SAS系统自动产生的,不必写出)。
如果你执行DATA步但不想创建SAS数据集,可在DA TA语句里规定关键字_NULL_作为这个数据集的名字。
如果你在DA TA语句中没有规定数据集的名字或保留名字_NULL_,那么SAS系统自动地创建一些SAS数据集,并命名为DA TA1、DA TA2、…等等。
这些数据集被存在WORK库中。
五.SAS数据集的索引
SAS数据集可以用一个或几个被称为关键字变量的变量来索引。
SAS索引根据用它们的值组成索引的关键字的个数多少而分为:
●简单索引
●复合索引
图3-4 为STUDY.CLASS数据集建立关键字是NAME的索引
1简单索引
简单索引是用一个关键变量的值来对观测定位指针。
这个关键变量可以是数值变量或字符变量。
当你创建一个简单索引时,SAS系统自动地以关键变量相同的名字给这个索引命名。
下面的例子显示PROC DA TASETS语句为Study.class数据集创建一个简单索引。
用library=study指明库标记study,用modify class语句说明在已指定d:\sasdata\mydir目录下所要修改的数据集名为class,真正建立索引的语句为index create name,name是数据集class 中的一个字段名,被指定为关键变量,然后用contents data=class语句打印这个class数据集的内容资料。
见图3-4所示。
2复合索引
复合索引引用两个或两个以上变量的值来确定观测的指针位置。
用在复合索引中的这些变量可以是数值类型或字符类型或两者兼有。
当创建这个索引时必须规定一个唯一的索引名。
下例见图2-5所示,给出PROC DATASETS语句为数据集Study.Class创建一个复合索引。
图2-5为数据集Study.Class创建复合索引
TEST1、TEST2和TEST3三个变量被指定为关键变量。
Index create TEST=(test1 test2 test3)语句中,TEST变量是建立复合索引时,必须由用户自行规定一个唯一的索引名,小括号内的数据集变量的次序表示复合索引的关键字次序,即test1是第一关键字,test2是第二关键字,test3是第三关键字。