sas软件教程精华
实际上,上述程序是文本,完全可以在任何文本编 辑工具中输入,比如Windows中的记事本,甚至 Word也可用来输入这样包含中文的程序。输入后使 用复制复制、粘贴命令将输入的程序粘贴到SAS系 统程序窗口。(即在记事本中复制输入的程序,然 后在SAS系统程序窗口中使用粘贴命令,把程序复 制到SAS中)。 要运行此程序,只要用鼠标单击工具栏的提交 (Submit)图标 ,或用Run菜单下的Submit命令, 或者直接按下F8键,就可运行程序。如果选中某一 段程序,然后进行调用,则系统只执行被选中的部 分。
SAS程序的程序组成 SAS程序可以非常复杂,但其基本结构 一般由数个完成单个动作的程序步和环境设 置语句构成。而程序步分为两种,一种叫数 据步(data step),一种叫过程步(proc step),分别以DATA语句和PROC语句开始。 数据步和过程步由若干个语句组成,一般以 RUN语句结束。前者用来创建和修改用于统 计分析的数据集,后者则利用已创建的数据 集完成特定的统计分析任务。比如下面的例 子:
运行后,输出窗口出现如下结果: 0401班学生成绩排名 1 11:40 Saturday, November 10, 2004 Obs name sex math chinese avg 1 李明 男 92 98 86.8333 2 张红艺 女 89 106 88.6667 3 王思明 男 86 90 80.5000 4 张聪 男 98 109 94.4167 5 刘颍 女 80 110 85.8333 运行记录窗口则记录每段程序的运行情况、所用时间、 生成数据保存情况。如果有错误还会用红色指示错 误。
SAS系统具有灵活的功能扩展接口和强大的功能模 块,在BASE SAS的基础上,还可以增加如下不同的 模块而增加不同的功能:SAS/STAT(统计分析模 块)、SAS/GRAPH(绘图模块)、SAS/QC(质量控 制模块)、SAS/ETS(经济计量学和时间序列分析 模块)、SAS/OR(运筹学模块)、SAS/IML(交互 式矩阵程序设计语言模块)、SAS/FSP(快速数据 处理的交互式菜单系统模块)、SAS/AF(交互式全 屏幕软件应用系统模块)等等。SAS有一个智能型 绘图系统,不仅能绘各种统计图,还能绘出地图。 SAS提供多个统计过程,每个过程均含有极丰富的 任选项。用户还可以通过对数据集的一连串加工, 实现更为复杂的统计分析。此外,SAS还提供了各 类概率分析函数、分位数函数、样本统计函数和随 机数生成函数,使用户能方便地实现特殊统计要求。
SAS系统是一个组合软件系统,它由多个功能模块 组合而成,其基本部分是BASE SAS模块。BASE SAS 模块是SAS系统的核心,承担着主要的数据管理任 务,并管理用户使用环境,进行用户语言的处理, 调用其他SAS模块和产品。也就是说,SAS系统的运 行,首先必须启动BASE SAS模块,它除了本身所具 有数据管理、程序设计及描述统计计算功能以外, 还是SAS系统的中央调度室。它除可单独存在外, 也可与其他产品或模块共同构成一个完整的系统。 各模块的安装及更新都可通过其安装程序非常方便 地进行。
功能 CARDS与DATALINES功能相同, 均用于标志数据块的开始
INFILE语 句 OUTPUT语 句
从外部文件中读入数据块 将所读入的数据存放在缓存中, 也可用OUTPUT语句强制输 出一条新记录 对数据集中的数据进行编辑, 也可将指定数据集的内容复 制到新建数据集中
SET语句
下面是几个例子。 Data语句: Data abc; data work.abc data sasuser.abc; data a.abc; INPUT语句: Input x y z; /*输入变量x,y,z*/ Input x1-x10; /*输入10个变量x1到x10*/ Input x$y@@; /*输入变量x,y,符号$指明x为字 符变量,@@表示数据是连续读入*/
三万家机构所采用,直接用户则超过三百万人,遍 及金融、医药卫生、生产、运输、通讯、政府和教 育科研等领域。在英美等国,能熟练使用SAS进行 统计分析是许多公司和科研机构选材的条件之一。 在数据处理和统计分析领域,SAS系统被誉为国际 上的标准软件系统,并在96~97年度被评选为建立 数据库的首选产品。堪称统计软件界的巨无霸。在 此仅举一例如下:在以苛刻严格著称于世的美国 FDA新药审批程序中,新药试验结果的统计分析规 定只能用SAS进行,其他软件的计算结果一律无效! 哪怕只是简单的均数和标准差也不行!由此可见 SAS的权威地位。
四、SAS程序的数据步
数据集(dataset)和库 SAS数据集(SAS Datasets)可以看作由 若干行和若干列组成的表格,类似于一个矩 阵,但各列可以取不同的类型值,比如整数 值、浮点值、时间值、字符串、货币值等等。 比如,前面的例子生成了一个名为C0401的 数据集,它的逻辑形式如下表:
语句 格式 功能
DATA语句
DATA 数据集名;
数据步的开始,同时命名将要创 建的数据集
INPUT语句
INPUT 变量名<变量类型 起止列数>…;
确定变量的读入格式,即确定输 入的数据所对应的变量
语句 CARDS或 DATALI NES语句 与数据块
格式 CARDS; 数据块 ; 或 DATALINES; 数据块 ; INFILE ‘文件名’ 选 项;
逻辑库 SAS系统将所使用的文件以库的形式组织起来,而数据 集则存放在一个库中,这个库就称为逻辑库。前面见到过的 libname命令就用于指定库标记。其一般格式为: Libname 库名称 ‘文件夹位置’ 选项; 例如 libname a 'd:\sysdata\'; data a.aaaa; input x @@; cards; 1 2 3 4 5 ; proc print; var x; run; quit; 第一行就指定d:\sysdata\为逻辑库位置,其名称为a.
引用在逻辑库中数据集时要使用两级名 称来指定,第一级为库名称,第二级为数据 集名,中间用句点“.”隔开。即用 库名称.数据集名 的格式来引用该数据集。 仍然是上面的例子,第2~6句新建一个 数据集,数据集名称为aaaa,就可用a.aaaa来 引用该数据集。
数据步的基本结构 数据步均以DATA语句开始,用于创建和处理数 据集。数据步中常用的语句如下表: 表2 数据步的常用语句
SAS软件介绍
湖北工业大学理学院
一、概述
SAS系统全称为Statistics Analysis System, 最早由北卡罗来纳大学的两位生物统计学 研究生编制,并于1976年成立了SAS软件 研究所,正式推出了SAS软件。SAS是用于 决策支持的大型集成信息系统,但该软件 系统最早的功能限于统计分析,至今,统 计分析功能也仍是它的重要组成部分和核 心功能。SAS现在的版本为9.0版,大小约 为1G。经过多年的发展,SAS已被全世界 120多个国家和地区的近
三、SAS程序的使用常识
从上面的例子程序可以看出SAS程序的一些特点。 SAS程序的基本结构 SAS程序由语句组成,语句用分号结束。语句 一般由特定的关键词开始,语句中可包含变量名、 运算符等,它们以空格分隔。SAS对语句所占的行 数无限制,一个语句可占多行,同样,多个语句也 可占一行。
二、初识SAS
安装SAS 哪位要是连软件的安装和打开都要我啰嗦 的话,我劝您还是买一套洪恩的《开天辟 地》好好热热身吧。 不过,安装SAS时,应首先将系统时间改到 2002年以前,安装完以后,再crack,然后将 时间修改还原,切记!
启动SAS
启动后,出现如图 的SAS运行界面,术语称 为"SAS工作空间(SAS Application WorkSpace) "。它象其它Windows应用程序一样,在一个 主窗口内,包含若干个子窗口,并有菜单条、 工具栏、状态栏等。 SAS有三个最重要的子窗口:程序窗口 (PROGRAM EDITOR)、运行记录窗口 (LOG)、输出窗口(OUTPUT)。 Program Editor的窗口(窗口标签为Editor)就 是用来输入SAS语句的,编程操作的所有内容 都是在该窗口内完成的,各位还是要跟它先 多熟悉一下。
简单运行样例 假设我们有一个班学生的数学成绩和语文成 绩,数学满分为100,语文满分为120,希望 计算学生的平均分数(按百分制)并按此排 名,可以在程序窗口输入此程序:
title '0401班学生成绩排名'; data c0401; input name $ 1-10 sex $ math chinese; avg = math*0.5 + chinese/120*100*0.5; cards; 李明 男 92 98 张红艺 女 89 106 王思明 男 86 90 张聪 男 98 109 刘颍 女 80 110 ; run; proc print;run; proc sort data=c0401; by descending avg; run; proc print;run;
从上面看出,数据集要有名字,变量要有名 字,所以SAS中对名字(数据集名、变量名、 数据库名,等等)有约定:SAS名字由英文字 母、数字、下划线组成,第一个字符必须是 字母或下划线,名字最多用8个字符,大写字 母和小写字母不区分。比如,name,abc, aBC,x1,year12,_NULL_等是合法的名字, 且abc和aBC是同一个名字,而class-1(不能 有减号)、a bit(不能有空格)、serial# (不能有特殊字符)、Documents (超长) 等不是合法的名字。
完整例子: libname a 'd:\sysdata\';/*设定逻辑库,库名为 a*/ data a.aaaa; /*建立数据集,其名为aaaa*/ input x @@; /*输入变量x, @@表示数据是连续 读入*/ cards; /*准备输入数据*/ 1 2 3 . 5 ; /*输入数据,注意有缺失值(缺失值用单独的 小数点代表)*/