1、此章节的练习内容:,1、将例1的程序运行,注意不要将程序直接拷到软件运行,自己书写程序。,2、新建一个EXCEL文件,将其导成SAS数据。,3、用viewtable表格的方式建立一个SAS数据集,建好之 后,能否对这个数据集进行修改?若要修改,怎么修改?,4、请分别用菜单操作和编程方式建立一个永久逻辑库。,5、请练习此章节PPT中关于纵向合并和横向合并的例题。掌握纵向合并和横向合并的方法。,1 SAS系统入门,福州大学管理学院统计系李 红,1.1 系统概述,SAS (Statistical Analysis System ) 系统 是国际著名的数据分析软件系统。 该系统1966年开始研制,19
2、76年由美国SAS 公司实现商业化,1985年推出SAS/PC版本, 1987年推出6.03版,目前已推出Windows 系 统支持的8.02和9.0版,是目前国际上公认的 著名的数据统计分析软件系统之一。,SAS系统的主要功能 基本部分: BASE SAS 部分; 统计分析计算部分: SAS/STAT ; 绘图部分: SAS/GRAPH ; 矩阵运算部分: SAS/IML ; 运筹学和线性规划: SAS/OR ; 经济预测和时间序列分析: SAS/ETS ;,1.2 SAS系统界面操作指南,1.2.1 SAS的启动与退出,1.2.2 SAS系统界面简介,例1 若学生数学成绩满分120,英语成
3、绩满分为 100 ,要求计算学生的平均分数,并按降序排名. Data a; Input name $ sex $ math english ; Avg=math/120*100*0.5 + english*0.5 ; Cards; Wanghong F 89 73 Liming M 91 68 Xukaige M 87 78 Wuqingy F 92 84 Liqinghua F 92 78 Zhangpj M 87 78 ; Proc sort data=a; By descending avg; Proc print ; run;,请自己试一试这个程序!,SAS程序的一些语法规定:,SAS
4、程序由 语句组成。每个语句用半角分号“ ; ” 作为结束符(不能使用中文分号“ ;”)。 程序命令使用的英文单词不区分大小写字母(系统对于数据集中的数据字符串区分大小写字母)。SAS V8版中提供了智能编辑窗口,在智能编辑窗口中输入的SAS程序使用的关键字、语句、数据、标识都由不同颜色显示,当你输入错误时,颜色显示不正确,这样我们可以方便地查找及改正错误。SAS程序由两类“操作步”构成,一种叫 数据步(Data Step),一种叫 过程步(Proc Step),数据步以DATA语句起始,过程步以PROC语句开始。每个“操作步”由若干条语句构成,一条语句可以占多行,多条语句也可以写在一行内,在语
5、法上只要保证每条语句以半角分号“;”作为结束符即可。通常我们应该在程序中保持每条语句单独分行的风格,使得程序具有更好的可读性。每个SAS过程一般以RUN语句结束。有些过程需要使用QUIT语句结束运行。,1.3 SAS系统的文件管理,1.3.1 SAS文件与逻辑库在利用SAS进行数据分析时,首先必须将要分析的数据正确合理地生成SAS数据集。SAS系统的文件以及对于文件的管理涉及到数据集、逻辑库两个基本概念,他们构成了SAS应用的基本数据平台,下面我们分别对这两个概念以及相关管理与操作方法作一个详细的介绍。,1. SAS数据集:SAS数据集(SAS Datasets)可以看作由若干行和若干列组成的
6、表格,各列可以取不同的类型,如整数型、浮点型、时间型、字符型、货币型等等。,建立数据集的几种方法:1、进入viewtable窗口2、数据的导入、导出4、利用data步程序,1、建立新数据集,Tools/Table Edit/右击列A /Column Attributes,2 、修改已存在的数据集,SAS系统对已存在的数据集有较好的保护性,当打开一个已存在的数据 集时,数据集Viewtable的默认方式为Browse模式 。要修改表中的数 据,需要选择菜单Edit /Edit Model才能对其进行修改,但不能对已存在 的数据集中的变量名进行修改,只能修改变量的标签。修改后点击保存 命令。,用v
7、iewtable表格建立数据集,3、向已存在的数据集中添加一行新记录,需选择菜单Edit / Edit model 使数据集成为可编辑模式, 然后选择菜单Edit/ ADD Row添加一行空行并将数据输入到相 应的列中,然后选择菜单Edit / Commit New Row将新行提交 到该数据集中,然后点击保存命令修改保存后的数据集。,SAS系统的viewtable表形式与Excel表相似,但操作与Excel表很 不相同,也没有方便的拖动功能。如果大家对Excel表的操作比较熟 悉,建议先将数据输入到Excel表中,然后利用SAS系统的File/ Import data命令将数据导入生成SAS
8、数据集,数据的导入、导出,1、导出数据集,FILE/Export,2、导入数据集,FILE/Import,注意:将Excel导入成SAS文件时,Excel的文件名只能是英文字母和数字,不能用汉字。EXCEL文件的第一行应为数据的变量名,变量名称只能用英文字母和数字,不能用汉字。导入Excel文件时 , Excel文件必须处于关闭状态,否则在SAS系统的导入过程中将不能生成SAS数据集。原因是该软件不能同时被两个应用软件同时处理。,练习: 请将EXCEL数据导入练习数据转换成SAS数据 集。如果不能转换成SAS数据,试对EXCEL数据进行 适当修改,使其能转换成SAS数据集。,用data步创建数
9、据集,Data a; Input name $ sex $ math english ; Avg=math/120*100*0.5 + english*0.5 ; Cards; Wanghong F 89 73 Liming M 91 68 Xukaige M 87 78 Wuqingy F 92 84 Liqinghua F 92 78 Zhangpj M 87 78 ;,Proc print ; run;,试一试:如果去掉Proc print 语句,结果会怎么样?,2. SAS逻辑库(Libraries):SAS系统为 了便于管理和使用SAS文件,将它们按照不 同的应用需要集中管理,每个文
10、件的集合就 称为一个SAS逻辑库(Library)。建立SAS逻辑库的方法有程序命令和菜单 操作两种。,(1)通过程序命令建立逻辑库,命令格式为:,Libname 建立的逻辑库名称 “文件夹路径”,例如在d:sas2003子目录中保存了若干SAS数据集文件,我们可以建立一个逻 辑库tjx,实现逻辑库tjx与d:sas2003的连接。,2、通过SAS命令菜单方式建立逻辑库,3、查看逻辑库的属性(右击,查看properities),libname L3 D:my documentmy sas files ; data L3.stu01 ; input name $1-9 birth yymmdd1
11、0. age inday yymmdd10. sno math english ; cards ;,王 红 1973/6/2 22 1995/9/10 9510012 89 73 李 明 1974/3/23 21 1995/9/9 9510004 91 68 徐凯歌 1973/11/14 21 1995/9/10 9510034 87 78 吴青云 1974/4/12 21 1995/9/9 9510023 92 84 李清华 1973/10/24 21 1995/9/10 9510024 92 78 张萍江 1973/12/23 21 1995/9/9 9510005 87 78,proc
12、print ; format birth inday mmddyy8. ; run;,练习:请自己书写并运行下列程序,有问题吗?,3 逻辑库的种类,SAS的逻辑库分为临时逻辑库和永久逻辑库。,存放在临时逻辑库中的数据集是临时文件,当退出SAS系统时,这些临 时文件会被自动删除。而存放在永久逻辑库中的文件不会被删除。,从数据集名称的表达形式来看。临时数据集和永久数据集是不同 的。临时数据集可以用单水平命名,即只有数据集名。比如,stu。因 此,这种名字的数据集文件一定保存在work中。而永久数据集名称是由 两部分组成(双水平标志),前一部分是它的库名,后一部分为数据集 名,两部分中间用小数点表示
13、,比如放在mysas库中的数据集stu02需要 用mysas.stu02。,1.4数据集的编辑与整理,1 数据集变量名的更改 2 数据集变量 观测记录的增加与筛选 4 数据集排序 5 数据集的纵向连接 6 数据集的横向合并,数据集变量名的更改SAS系统对数据集的管理很严格,对已建立的 数据集变量名不允许随意更改.当需要更改时, 可以使用rename语句来更改变量名. 例,data genggai; set lh.stu02 ; rename avg=avg_me ; proc print ; run;,Rename语句等号前是旧变量名,等号后是 新变量名。另外,rename语句还可以同时 对多
14、个变量名进行更改。如:,Rename old1new1 old2new2 ;,变量、观察记录的筛选Keep语句用来指定需要保留的变量,其他变量将被 删除。 Keep语句格式: 格式1: keep 变量1 变量2 变量n ; 格式2: data = 数据集名称 (keep = 变量1 变量2 变量n) ;Drop语句用来指定被删除的变量,其他变量将被保 留。 Drop语句格式: 格式1: drop 变量1 变量2变量n; 格式2:data=数据集名称 (drop=变量1 变量2 变量n); 注:在一个程序中keep/drop语句只能使用其中之一,不能同时使用,data zengjia shaix
15、uan; input name $ 1-11 sex $ math english ; avg=math/120*100*0.5+english *0.5; total= math +english;keep total avg name ; cards; wanghong F 89 73 liming M 91 68 xukaige M 87 78 wuqingyun F 92 84 liqinghua F 92 78 zhangpjiang M 87 78 ; proc sort data =zengjiashaixuan; by descending avg ; run; proc pr
16、int; run;,数据集的排序 1 用viewtable 窗口对数据集进行排序 2 用sort过程来实现,该过程的语法结构如下:proc sort ;By 变量名;Run;,数据集的纵向连接 数据集的纵向连接指的是几个数据集中的数据纵向相加,连接为一个新的数据集,新数据集中的记录数是原来几个数据集中记录数的总和 语法格式:Set 数据集名称1 数据集名称2 ;,data a ; input id math ; cards ; 1 89 2 90 ; data b ; input id math english ; cards ; 3 82 86 4 90 84 ; data total; s
17、et a b; proc print data = total noobs; run;,自己试一试,如果没有noobs结果将是怎样的情况呢?,数据集的横向合并按照某个关键变量将不同数据集中的不同变量拼接为一个数 据集。 语法格式: Data 合并后数据名 ; Merge 数据名1 数据名2 ; By 共有变量名 ; Run; 注: 在merge之前要将数据集1 , 2 分别按共有变量名排序(无论变量名是字符型还是数据型).,data one; input pid sex$ age; cards; 101 m 54 105 w 36 102 m 43 104 w 45 ; data two; i
18、nput pid weight height; cards; 105 54 163 102 63 174 103 57 173 104 45 156 ;,proc sort data=one; by pid; proc sort data=two; by pid; data total2; merge one two; by pid; proc print data=total2; run;,本章小节,本章我们主要介绍了SAS入门的基本操 作,我们要掌握的内容有: SAS系统的启动与退出 了解SAS系统界面各个窗口的功能 逻辑库的功能、创建以及数据集的基本操作 4 数据集的导出、导入 5 数据集的编辑与整理,