Free Essay

The Little Sas Book

In:

Submitted By Sharonbaby
Words 6620
Pages 27
第一章 SAS 软件入门
1.1 SAS 语言
许多软件要么是菜单驱动,要么是命令驱动(输入命令——看结果)
。SAS 两者都不是,在
SAS 中,你用一个叫做 SAS 程序的一系列指令语句,这些程序可以表达出你想做的事情,并
用 SAS 语言写下来。SAS 有菜单驱动栏,比如 SAS 企业向导模块,它使 SAS 看起来像一个点
击的软件,
但这些模块仍然使用 SAS 语言为你写程序。
如果你试图用 SAS 写下你自己的程序,
那就要具备一定的灵活性。

SAS 程序 一个 SAS 程序就是一个按顺序执行的语句序列,一个语句给 SAS 下达信息和指
令,
且必须要正确的安放。
一个常用来与 SAS 程序做类比的例子是去银行取款,
你进入银行、
排队、轮到你,那么你会对柜台谁你想做的事,叙述语句可能会是这样:
I would like to make a withdrawal.
My account number is 0937.
I would like$200.
Give me five 20s and two 50s.
注意第一句话说了你想做的事情,
之后把相关信息传递给柜台并帮你完成要求。
这里信息传
递的顺序不重要,重要的是在你的叙述中,首先要说明你要做什么。你不能先说:
“Give me five 20s and two 50s.”这会使柜台小姐一头雾水。此外,你必须确保后面的语句都围绕第一
句展开。

SAS 语句 像任何语言一样,SAS 语句的编写也需要遵守一些语法规则。幸运的是,相比英
语来说,SAS 语句的规则不仅少,而且简单。
最重要的规则是:

每一个 SAS 语句都由一个分号结尾
听起来很简单,
但即使最富有经验的 SAS 程序员也会偶然忘记分号。
如果你能记住这个规则,
再来看看另外两个规则吧。

SAS 程序布局 让每一条语句看起来整洁、用缩进来表现语句的各个部分,这是很有用的,
但不是必须的:


SAS 语句不区分大小写。



一条语句可以持续到第二行(只要不把一个单词分开)




几条语句可以用一行。

1



可以在任何一列中开始一条语句

注释 可以在你的程序中插入一些注释,让它更容易明白。即使你插入一些你喜欢的食物品
名也不会对程序有所影响,
因为 SAS 不读取注释。
但不要忘记注释是为了让某人更轻松的学
习你的程序,并明白你为什么这么做。
*Read animals’weights from file;
DATA animals;
INFILE’c:\MyRawData\Zoo.dat’;
INPUT Lions Tigers;
PROC PRINT DATA=animals;

/*Print the results*/

RUN;
有两种注释方法,一种是*号和;号;一种是用/* */表示,注意第二种注释方法不能放在第
一列

错误

SAS 程序通常将执行的错误标注为醒目的红色字母,你可能忘了分号,拼错了字母,

按错了键盘,
一个小错误会使得整个程序无法运行。
当你看到红色部分多余黑色部分的时候,
不要灰心。

1.2 SAS 数据集
在你进行分析、撰写报告、对你的数据进行任何处理之前,SAS 必须能够处理你的数据,你
的数据必须是一种叫 SAS 数据集的特殊形式。
因为 SAS 非常灵活,
能够读取任何形式的数据,
所以将你的数据变成 SAS 数据集是一件非常简单的事。

变量和观测值 在传统的 SAS 术语中,数据包括变量和观测值。采用相关的数据库的术语,
SAS 数据集也被叫做表、观测值也被叫做行、变量也被叫做列,你可以看到下面这个包含一
些数据的表。

2

数据类型 未加工的数据有多种形式, SAS 将其简单化。 SAS 中只有两种数据类型——


数值型和字符型。数值型完全是数据,可以被加减乘除、可以是正负且是小数。字符变量是
除数值之外的类型,可以是数值、字母、和一些特殊的字符(¥、)
!,最多可以占用 32767
个字节长度。
如果一个变量既包括数字又包括字符,那么它一定是字符变量。如果只包括数字,可能是字
符变量也可能是数值变量。
在上面这个表中,
姓名是字符变量,
身高和体重是数值变量,
ID,
既可能是数值有可能是字符,依据你的选择。

缺失值 数据有时会有些不完美,某些变量的个别观测值会缺失。字符变量的缺失值用空格
表示,数值变量的缺失值用句号(.)表示。上表中,体重的第五个观测值缺失,用.表示。
姓名的第六个观测值缺失,用空格表示。

SAS 数据集的大小 在 SAS 9.1 之前(prior to SAS 9.1)
,SAS 数据集可以包含 32767 个变量,
从 SAS 9.1 开始(beginning with SAS 9.1)
,SAS 可包含的最多变量数由你的电脑可用资源决定
(内存,CUP?)
。但是超过 32767 个变量的 SAS 数据集不能用在早期的 SAS 版本上。

SAS 命名规则 为你的变量和数据集命名,使它们容易被辨别。A,B,C 这样的名字可能看起
来很完美,写程序的时候也很方便,但当你 6 个月后再使用这些数据时,你会发现 name, height,weight 这样的名字更有用。为变量和数据集命名时要遵守如下规则:


名字的长度要小于等于 32 个字节。



以字母或下划线开头。



可以包含字母、数字、或者是下划线,不能是%$!*&#@。



可以是小写或大写字母,且不区分大小写。

SAS 数据集储存的文件 SAS 数据集包含了一些类似名称、创建日期、创建用的 SAS 版本
等信息。SAS 也储存了每个变量的信息,包括名称、类型、长度、数据集中的位置。这些信
息叫做数据集的描述部分,它使得数据集可以自我编制(self-documenting)


3

1.3 SAS 程序的两个过程
SAS 程序有两个基本模块:数据步和过程步。一个典型的 SAS
程序,由数据步创建 SAS 数据集开始,再由过程步分析数据。
这里有一个例子:数据步中将米转化成千米,过程步中输出结


数据步和过程步由语句组成(废话)
,一个过程少至 1 条语句、多至几百条。新手常犯的错
误是将两种过程语句用混,只要记住数据步负责读取、修改数据,过程步负责分析数据、输
出报告和效用函数,就不会犯错。
数据步由 DATA 语句开始:data+数据名。上例中数据步处理了名为 distance 的数据。为了读
取外部数据、未加工的数据,数据步提供了 DO LOOPS,IF-THEN/ELSE,以及一些数值和字符
函数。数据步也可以按照你想要的方式合并数据集,包括联接(concatenation)和合并
(match-merge)

过程步由 proc 语句开始:proc+过程名(print、sort、means…)
,SAS 过程步可以处理从数据
储存、输出到方差分析、3D 图表的一切操作。
当程序遭遇 DATA\PROC 等标志着新程序开始的语句时,程序结束。如果运行的是批处理,
则 run 代表语句的结束。 告诉 SAS 去执行所有之前的程序行,
Run
全局变量不是 DATA 或 PROC
过程的部分。上图的那个程序,当 proc 出现时,代表 data 过程结束。
典型的程序是以 DATA 语句开头,输入或修改数据,然后将数据传递给 PROC 语句。但并不
一定非要用这种模式来混合 data 和 proc 语句,你可以用任何顺序来排列 data 和 proc 两者
的顺序,一个程序甚至可以仅有 data 语句或 proc 语句。
下表是 data 语句和 proc 语句的一些基本不同点:

4

这只是一个简化表,SAS 软件非常灵活,所以 data 语句和 proc 语句之间真正的区别也是很
模糊的。记住,这个表并不是说 proc 语句永远不能创建 SAS 数据集,或者 DATA 语句永远不
能够分析生成报告。

1.4 数据步的内置循环
Data 步读取并修改数据,让你以灵活的方式控制处理数据。Data 步也有一个潜在的、内置
的循环语句。你不用告诉 SAS 去执行这个循环,SAS 会自动执行。

数据步按照一行一行、一个观测值一个观测值的顺序执行
这句话的表意并不明确,许多新手直到成了老手都没明白这句话的含义。
数据步“一行一行的执行”
,这句话很好理解。但很多新手还是容易在这里出错,例如在没
有创建一个变量之前就使用它,如果 Z 变量是 X、Y 两个变量组合的新变量,那么必须确定
创建 Z 变量的语句在创建 X、Y 变量语句之后。

“一个观测值一个观测值的执行”
就不是那么容易理解。
这意味着 SAS 先读取一个观测值,
然后对这个观测值进行数据步的所有语句(当然也是一行一行的)
,然后再读取第二个观测
值执行。每次执行 SAS 只有一个观测值。
我们将 SAS 执行的图景放慢:SAS 从你的数据集中读取一个观测值。SAS 对你的这个观测值
执行数据步,
如果数据步一直运行到结束而没有错误, 会把当前的观测值写入一个新的、
SAS
输出数据集中,并返回到数据步开头,读取第二个观测值进行执行。当最后一个观测值都被
写入输出数据集中之后,SAS 结束数据步,进入下一个步。

有一个类比,数据步就像是一个投票程序。当你来到投票的地点,你会站在别人后面进行排
队,排到你时,你会被问到:你叫什么名字,住在哪里。当你回答之后,你可以投票。在这
里,排队的人就像是观测值,投票的程序就像是数据步。一次只能让一个人投票,每个人都
相互独立。并且投票的程序是一步一步来的,你不能没说明自己的姓名和住址之前就投票。

1.5 选择一个提交程序的方式
目前为止我们讨论了写 SAS 程序,但仅仅写不能带给你任何结果,你必须要提交并执行。有
数种方法可以执行 SAS 程序,
但不是任何方法都适合于你的操作环境。
查找一下 SAS 帮助文

5

档,或者咨询下你的 SAS 顾问,看看哪种方法适合你的操作环境。

SAS 视窗环境
如果你使用 SAS 是按照系统提示,
或者是点击 SAS
的图标,那么你适合使用 SAS 视窗环境。在这种
交互式的环境中,你可以写入、编辑 SAS 程序,
提交处理、浏览、输出结果的 SAS 程序。此外,
视窗有许多功能可以处理不同的任务,如管理
SAS 文件、定制界面、访问 SAS 帮助文档、导入
和导出数据。你的视窗环境的界面取决于你电脑
的的类型、
使用的终端、
电脑操作系统和启动 SAS
时实际的选择。如果你使用的是个人电脑,那么
SAS 视窗环境的感觉和其他软件类似。

SAS 企业向导
如果你有 SAS 企业向导软件,
这个软件在 windows
下即可运行。你可以用这个软件提交程序:使用
插入菜单打开代码窗口,输入序或打开现有 SAS
程。之后你可以用本地电脑、或者在远程服务器
上(需要安装)运行 SAS 程序。

非交互式模式
非交互式模式是 SAS 程序语句已先存于你系统的文件中,直
接执行那个文件。非交互式模式可以让 SAS 立即执行程序,
通过某个指令开始($)
,后接文件名,如:
$ SAS Myfile.sas

批处理或后台模式
在批处理或后台模式下,你的程序存于一个文件中,SAS
会自动执行,你不需要在电脑旁,如果程序多,SAS 会将
这个程序进行排队等待。这种模式通常用在大型电脑中,
因此通常可以一次性处理多个任务。
批处理或后台模式的
成本比较低,适合于大型工作,工作完成后,结果会存于
文件夹中,
你可以任何时候输出查看。
批处理未必适合你
的操作环境,另外提交方式也会有不同,最好查看 SAS
帮助文档,或咨询 SAS 顾问。

6

远程提交
如果你安装了 CONNECT 模块,可
以进行远程提交,即在一台电脑
上(本地)编写程序,在另一台
电脑上(远程)处理,结果会返
回本地电脑。当你处理大型任
务,而你的电脑性能又不够时,
可以连接到远程的高性能电脑
上,也可访问远程电脑的分享文件。

交互行模式
交互行模式下,SAS 每次提示用户输入一个语句,想改
正输入的语句不是那么容易的。因此除非你足够优秀和
熟练,否则最好不要用这个模式。你可以用 endsas 并
回车来退出这个模式:
Endsas;
如果你想知道为什么会进入这个模式,并且在以后避免进
入,你需要咨询 SAS 顾问。

1.6 SAS 视窗环境中的视窗和命令
SAS 视窗
SAS 有五种基本的视窗(窗口)
:结果视窗、资源管理器视窗、和三种程序视窗:程序编辑、
日志、输出。除此之外,在获得 SAS 帮助、改变 SAS 系统选项、定制 SAS 人机会话等情况时,
可能还会用到其他的视窗,下图显示了 Microsoft Windows SAS 会话中默认的视图:

7

编辑窗口 编辑窗口中你可以输入、编辑、提交 SAS 程序。Windows 操作环境默认的是增
强型编辑窗口,它对语法更敏感,并用颜色标注程序,使得更容易理解和发现错误。其他操
作环境默认的是程序编辑窗口,并随操作环境和 SAS 版本的不同,界面特征也不同。

日志窗口 日志窗口是关于 SAS 会话的说明。在提交 SAS 程序之后,任何的说明、错误、警
告和程序语句都会显示在日志窗口上。

输出窗口 如果程序产生需输出的结果,那么会反映在在输出窗口中。
结果窗口 结果窗口就像输出窗口的一个目录表,以提纲形式列出了输出的每一个部分。
SAS 命令
SAS 命令是为了不同的任务,你有三种方式发出命令:菜单、工具栏、SAS 命令栏,如下图:

菜单 (大部分操作环境都会有一个下拉菜单要么在窗口上方要么在屏幕上方…..oh my god!
略)

工具栏(不是所有的操作环境都有工具栏…略!

SAS 命令栏 可以在这里输入 SAS 命令,一些操作环境中,命令栏坐落在工具栏中,另一些
操作环境中,每个 SAS 窗口都有一个命令行(command line)
,通过语句 command=>激活。
大部分命令是可以直接用菜单进行选择的。

控制你的视窗 你可以通过菜单、命令栏、点击的方式激活任何一种程序窗口

1.7 在 SAS 视窗环境中提交程序
将你的程序放入编辑窗口中 你可以通过输入,或者打开现有程序文件的方式将程序放
入编辑窗口中。打开现有的程序文件,可以通过菜单-打开,也可以通过工具栏的图表,或
者直接将文件拖放到编辑窗口中。

提交你的程序 你有几种方式来提交程序:
使用工具栏的提交图表

8

激活命令栏,输入 submit 命令回车。

从 run 运行的下拉菜单中选择 submit 提交

左图显示了如何在 windows 视窗中提交增
强型编辑窗口的程序。

访问 SAS 日志和输出 提交程序后,日志窗口和输出窗口会有相应的日志和结果显示,如果
你使用的是增强型编辑窗口,之前的程序会保留,如果使用的是程序编辑窗口,之前的程序
不会保留。如果你的程序产生了输出,那么结果窗口会显示这些输出的目录,下图是一个例
子,显示了提交程序之后,增强型编辑窗口、日志窗口、结果窗口、输出窗口的样式。

9

取回你的程序 如果不幸你的程序出现了问题,你需要再次运行,对于程序编辑窗口,由于
之前的程序不在保留,因此需要调回命令(recall)
,有两种方法:

命令窗口中输入 recall

激活编辑窗口,从运行(run)下拉菜
单中选择

如果不停的使用 recall 命令,SAS 可以
一直往前调回程序,知道所有提交的程序都被调回。

10

1.8 阅读 SAS 日志
在哪找到 SAS 日志 SAS 日志窗口的位置随着你使用的操作环境、选择的模式(视窗、非
交互、批处理)
、个人的设置的不同而不同。在视窗模式下,提交程序之后,日志窗口默认
的位置如下图:

对于批处理和非交互模式的日志则会被写入一个文件中,你需要使用操作环境的命令来查
看,一般日志文件的名字与对应的 SAS 程序名一直,如你的 SAS 程序命为 abc.sas,那么日
志文件的命则为 abc.log
日志包含的内容 日志中虽然有很多琐碎,但也包含了重要的信息。这里有一个将英里转换
为千米的程序:
*Create a SAS data set named distance;
*Convert miles to kilometers;
DATA distance;
Miles=26.22;
Kilometers=1.61*Miles;
*Print the results;
PROC PRINT DATA=distance;

11

RUN;

运行之后,SAS 的日志窗口会产生一个类似这样的日志:

① 说明了你使用的 SAS 版本和 site。
② 是原始的 SAS 程序语句
③ 说明了数据步为你创建的数据集名称,观测值数和变量数。它可以帮助你确认你的程
序没有丢失观测值,也没有创建你不需要的变量。
④ 这部分显示了数据步和过程步占用的电脑资源。当你使用的是多用户系统,或者处理
大型数据而使得 SAS 运行占用大量时间时,这部分信息可以帮助你检查哪一步比较耗时。
如果 SAS 程序出现错误,错误信息也会反馈在日志窗口中,说明哪里出错及出错表现。

1.9 输出窗口中浏览结果
你使用的模式不同,产看输出结果的方法也会不同。如果是在视窗模式下提交 SAS 程序,那
么直接在输出窗口查看,如果是批处理和非交互模式下,那么结果就会保存在一个文件里,
需要用命令查看。比如使用 UNIX 系统下的非交互模式,结果会存在一个后缀为.lst 的文件
里,使用 cat 或其他更多命令来查看。

12

输出窗口 提交程序后,结果会出现在输出窗口中,下图是一个输出窗口的例子

打印或保存输出窗口的目录 激活输出窗口的目录,在菜单栏文件(file)下拉菜单中选
择打印(print)或保存(save)即可。

结果窗口 结果窗口起到输出窗口的目录作用,当你的输出结果非常多时,结果窗口很有
用。它可以让你很清楚的看到输出结果的每一部分。下图是一个方差分析(ANOVA)过程的
结果。在这个图中,左边是输出结果的目录,点击+号将其展开,可以看见 ANOVA 结果的各
个部分,双击某一部分,则该部分结果就会位于输出窗口顶部。

13

打印或保存部分输出 如果要打印结果窗口中显示的某一部分的输出,
则需将鼠标移到该
部分上,右击,选择打印或保存即可。或者点击一下,使其黑亮,再从菜单栏文件(file)
的下拉菜单中选择输出或保存。

1.10 创建 HTML 输出
如果使用的是 SAS 视窗环境,那么可以为结果创建超文本标记语言(HTML)格式。

参 数 选 择 窗 口 选 择 菜 单 栏 中 工 具 ( tools ) 下 拉 菜 单 的 选 项 ( options ) - 参 数 选 择
(preferences)
。选择结果(result)选项卡,如下图所示:

14

这个参数选择窗口上,有一个“创建列表(create listing)
”选项,默认的输出就是列表输出。
下面还有“创建 HTML”选项,用来创建 HTML。样式(style)选项用来为 HTML 选择一个风
格样式。选择之后,点击 OK。

结果浏览窗口和结果窗口 (注意下面提到的三种窗口:结果浏览窗口 result viewer,结
果窗口 results window,输出窗口 output window)
一旦选择了 HTML 输出,每次运行程序的时候都会自动出现一个结果浏览窗口(result viewer) ,下图显示了在运行了一个均值和输出的程序后,出现两个窗口:结果浏览窗口—
—显示 HTML 输出,结果窗口——显示输出的目录。

15

结果浏览窗口一次只显示输出结果的一个部分,
通过选择结果窗口的目录,
可以查看其他的
部分。值得注意的是,结果窗口给出的目录中,每一个部分都给出了两种相同的目录,一个
是链接到输出窗口,一个是链接到结果浏览窗口
保存结果浏览窗口的输出(output of result viewer)的方法:激活结果浏览窗口,选择菜单
栏文件(file)下拉菜单的保存(save as)
、输出(print)

可以在 style 中为输出选择不同的风格,如下图就是 D3D 的风格:

1.11 SAS 数据的逻辑库
SAS 逻辑库库只是数据集文件存放的地点。打开 SAS 视窗模式后,会看到 SAS 资源管理器窗
口(explore)
,双击逻辑库图标,资源管理器窗口会显示出所有已定义的图标。要返回前一
级窗口,选择查看(view)-向上一级(up one level)
,或者在工具栏中直接点击向上一级图


逻辑库窗口 打开逻辑库窗口后,除了自己创建的库外,至少会呈现三个逻辑库:sashelp, sasuser,和 work,如果安装了某些 SAS 模块,还有一些特别的逻辑库,比如 SAS/GRAPH 模
块的 Maps 逻辑库。Sashelp 包含了控制 SAS 会话以及样本数据集的一些信息。WORK 是 sas
数据集的临时储存地点,创建的数据集如果没有指定库,则默认储存在这里,关闭程序时则
自动删除数据集。也可以更改默认的库,从而不是临时库。

16

创建新逻辑库 创建新逻辑库有两种方法:在逻辑库
窗口中选择文件(file)下拉菜单的新建(new)
;或者
直接右键——新建。

在新建逻辑库(new library)窗口中,为你的逻辑库起一个名字,这里叫做 Mylib,指定库的
存放路径。如果不想每次启动 SAS 都要调用这个库,则勾选启动时启用(enable at startup)
即可。

17

这是一个新建的 Mylib 逻辑库的视图。

1.12 用 SAS 资源管理器访问 SAS 数据集
可以利用 SAS 资源管理器打开数据集、浏览、编辑,也可以列出数据集的信息,如创建时间
和变量名。

目录窗口 打开一个逻辑库,进入一个目录窗口,显示这个
库中所有的文件和文件夹。右图的目录窗口中显示 Mylib 逻
辑库有三个文件:Customers,Models,orders。双击某文件,
则可以打开这个文件的可视视图。

18

可视视图 这
个窗口允许你创
建、浏览、编辑
数据集。

列出 SAS 数据集的属性 用资源管理器
还可以列出 SAS 数据集的一些属性情况,
右击某文件,选择下拉菜单的属性
(properties)

属性窗口显示了 SAS 数据集的属性
信息,如创建时间、行列数等。

19

如果选择列(columns)选
项卡,则出现数据的列信


1.13 使用 SAS 系统选项
SAS 系统选项是影响 SAS 运行的一些参数,比如输出的显示、内存的占用、错误的处理等问
题。这些小问题由 SAS 为你设定好,你也可以改变它。
SAS 系统选项的参数不是所有都适合你的操作环境,适合于你的再 SAS 的帮助文档中给出。
可以通过打开 SAS 系统选项窗口或使用 option 程序来查看你的 SAS 系统参数。Option 程序
的语句如下:
Proc options;
Run;
有四种方法可以指定系统选项的参数,SAS 帮助文档会告诉你哪种适合你的操作系统:
1. 系统管理员会创建一个包含了系统选项设定的配置文件,每次 SAS 启动时都会访问这个
文件。
2. 在启动 SAS 之后,根据系统提示指定系统选项。
3. 如果使用 SAS 视窗环境,可以从 SAS 系统选项中改变已选择的选项。
4. 使用 OPTIONS 语句。

20

这四种方法按照优先性排列,方法 2 优先于方法 1,方法 3 优先于方法 2,方法 4 优先于 3。
如果使用 SAS 视窗环境,方法 3,4 最好。

OPTIONS 语句 OPTIONS 语句是 SAS 程序的一部分,
并可影响之后的所有语句。 OPTIONS

关键词开头,后面是相关选项。比如:
OPTIONS LINESIZE=80 NODATE;
OPTIONS 语句既不属于数据步也不属于过程步,这个全局变量可以出现在程序的任何部分,
但放在开头最有意义,你可以很容易看到哪些选项在发挥作用。如果 OPTIONS 语句只出现
在数据步或者过程步中,
那么它会影响那个过程,
和下面的过程
(If the OPTIONS statement is in a DATA or PROC step,then it affects that stepand the following steps.) 注意,

后面的 OPTIONS
语句会覆盖前面的,即以后面的 OPTIONS 为主。

SAS 系统选项
窗口 通过这个
窗口也可以改变
系统选项。可以
通过在命令栏中
输入
“OPTIONS”

或从工具
(tools)
下拉菜单中选择.
窗口出来后,找
到要修改的部
分,右击——修
改值(modify the value)即可。 一般选项 下面是一些可能用到的一般系统选项
CENTER|NOCENTER

输出是否居中,还是左对齐。默认居中

DATE|NODATE

今天的日期是否出现在输出的顶部。默认输出

LINESEZE=n

控制输出行的最大长度,n 可能的值为 64 到 256

NUMBER|NONUMBER

输出的页面页码是否需要。默认需要。

ORIENTATION=PORTRAIT;
ORIENTATION=LANDSCAPE;

指定打印输出的方向。默认竖向(portrait)

PAGENO=n

输出页开始的页面。默认为 1

PAGESIZE=n

每个页面输出的最大行数。可能的值为 15 到 32767

21

RIGHTMARGIN=n
LEFTMARGIN=n
TOPMARGIN=n
BOTTOMMARGIN=n

指定打印输出的边缘大小。
默认 0.00 英寸
(Specifies size of margin(such as 0.75in or 2cm)to be used for printing output.Default:0.00in.) YEARCUTOFF=yyyy

设定起始年份

第二章 将你的数据放入 SAS(2.1-2.11)
2.1 将你的数据放入 SAS 的方法
你可能有各种形式的数据,包括手写在纸上、存放在电脑上、或是在数据库管理系统里,不
论如何,总有一种方法可以让 SAS 来读取。
SAS 读取的数据的方法主要有以下几种类型:


直接输入;



从原始数据文件中创建一个 SAS 数据集(creating SAS data sets from raw data files)




将其他软件中的数据文件转换成 SAS 数据集;



直接读取其他软件的数据集;

直接输入


Viewtable 窗口可以让你以表格形式输入数据,
可以定义变量、
设置属性, name、

length
和 type(character or numeric).



SAS 企业向导模块,a Windows only application,has a data entry window that is very similar to the Viewtable window.As with Viewtable,you can define variables and give them attributes. 

SAS/FSP 模块,是 Full Screen Product 的简称,可以设计定制的数据输入窗口,也有检
测数据输入错误的功能(The SAS/FSP product is licensed separately from Base SAS software.) 。

从原始数据文件中创建一个 SAS 数据集 你有两种方法读取原始数据文件:


数据步可以读取任何形式的原始数据文件,这种方法还将在 2.4 中详解。



导入向导(Import Wizard)
、导入过程(IMPORT procedure)适用于 UNIX、OpenVMS 和
Windows 操作环境的简单方法,可以读取 CSV(comma-separated values)和其他一些限
定的文件类型。

22

将其他软件中的数据文件转换成 SAS 数据集 如果数据在一个软件中以某种格式存放,
但需要用另一种软件分析时,就会很麻烦。有几种方法可以将某种软件中的数据转换成 SAS
数据集:


如果安装 SAS/ACCESS 模块,可以用导入过程(import procedure)和导入向导(Import
Wizard)将 Excel、Lotus、dBase 和 Access 文件导入 SAS 数据集,见 2.3 和 2.17(?)




如果没有安装,可以用存放数据的软件创建一个原始文件,并用数据步或导入过程
(import procedure)读取。很多软件都可以创建 CSV 文件。



Windows 操作环境下也可以用动态数据交换技术(Dynamic Data Exchange,DDE)
,见
2.18。前提是必须有一个其他的 Windows 程序与 SAS 同时运行,再使用 DDE 和数据步。

直接读取其他软件的数据集
 SAS/ACCESS 产品可以不用转换数据格式读取数据,并适用于大部分大部分数据库管理
系统,包括 ORACLE,DB2,INGRES 和 SYBASE(但使用方法本书没有介绍)

 使用 Excel engine 和 Access engine 来读取这两种类型的数据。
(SAS 帮助文档)
 还有其他的一些数据引擎(data engines)来读取数据,如 SPSS engine(附录 D)
,查找
帮助文档找到适合你操作环境的所有有效 engine。

2.2 用 Viewtable 窗口输入数据
调用 Viewtable 窗口,在工具栏的下拉菜单中选择表编辑器(Table Editor)


列属性窗口 每一列顶部的字母是默认的变量名,右击变量名,即可打开列属性(column attributes)窗口,设置属性之后,点击应用(apply) ,设置完后关闭即可。

23

输入数据

保存表 选择文件(file)——另存为(save as)
,选择一个逻辑库保存,如果想保存在新的
逻辑库,点击创建新逻辑库图表(New Library)
,输入逻辑库的名字和保存路径。

打开一个已有的表 首先打开表编辑器,选择文件(file)——打开(open)
。打开之后,
SAS 默认的是浏览模式,如果要对数据进行编辑,则要在编辑(edit)菜单中选择编辑模式。
也可以在资源管理器窗口中双击打开一个已有的表。

其他功能 其他一些功能包括排序、打印(printing)
、增加和删除行、一次浏览一行(窗体
视图 Form View)
、一次浏览多行(表视图 Table View)
。图标和菜单都可以选择这些功能。
在 SAS 程序中使用表 如下程序语句可以将表内容输出打印:
PROC PRINT DATA=Sasuser.coffee;

24

RUN;

2.3 用导入向导(Import Wizard)读取文件
导入向导会浏览你的文件以决定变量的类型,并默认数据表的第一行存放变量名。
第一步,从文件(file)下拉菜单中选择导入数据(import data)导入向导(Import Wizard)

第二步, standard data sources 中选择要导入的数据类型。 comma separated values


(*.csv)
为例。点击下一步
第三步,指定要导入的文件位置,SAS 默认第一行存放变量名,从第二行开始存放数据。
Options 可以改变这种默认选择。

25

第四步,选择数据集要存放的逻辑库,并为数据集取一个名字(member)

最后,导入向导创造一个 proc import 语句,可以是 SAS 再次导入这个数据。

另外,对于一些类型的数据文件还有额外的步骤,比如 Microsoft Access 文件,你需要输入
数据库名和药导入的表名,有时甚至还要输入 user 的 ID 号和密码。

在 SAS 程序中使用导入数据 比如你将数据存放在 work 逻辑库,并署名为 flowers,那
么你可以这样来输入它:

26

PROC PRINT DATA=WORK.flowers;
RUN;
由于 work 是默认的逻辑库,所以也可以直接这样:
PROC PRINT DATA=flowers;
RUN;

2.4 告诉 SAS 你的原始数据在哪
如果数据是原始数据(比如 text,ASCII,sequential,flat files)
,那么用数据步来读取能带给你最
大的灵活性。但首先你要告诉 SAS 你的原始数据在哪。
原始数据可以通过文本编辑器(text editors)或系统命令。对 PC 使用者来说,原始数据没
有相关联的应用程序(就像 doc 文件与 word 相关联,双击 doc 程序就默认调用 word 程序
以打开)
,有时他们会与像 Microsoft Notepad 这样的简单编辑器相关联。

内部原始数据 如果直接将数据输入 SAS 程序中,那么数据就是 SAS 内部数据。DATALINES
是一个指示,告诉 SAS 下面跟着是数据行,直到分号结尾,这个分号可以另起一行,也可以
接在数据的后面。也可以用 card 代替 DATALINES。下面是一个程序,这个程序创建了一个
USPRESIDENTS 数据集。
(Input 语句还将在 2.5 和 2.15 中讨论)

外部原始数据 数据外 SAS 程序外部时,使用 INFILE 语句告诉 SAS 外部数据的文件名和存
放路径,它在 data 语句之后,在 INPUT 语句之前。INFILE 后面的文件名和路径要用引号,
各种系统的引用方式各不同:

假设有一个 President.dat 数据在你的 C 盘的 MyRawData 目录中,

27

那么可以用如下方式引用这个外部数据:

SAS 日志 读取外部数据时,SAS 日志会给一些很有用的信息,检查这些信息可以解决一些
问题,
比如对比 INFILE 语句读取的记录数和数据集中实际观测值,
可以确定 SAS 是否正确的
读取了数据。上面程序的日志如下图所示,

过长记录 在一些操作环境中,SAS 假定外部数据文件的记录长度为 256 或更少(记录长度
是指某行中的字符数,包括空格)
,如果长度过长,SAS 不能读取全部,此时需要在 INFILE
语句中使用 LRECL=来指定长度,这个长度必须是数据中最长行的长度,如:
INFILE’c:\MyRawData\President.dat’LRECL=2000;
可以通过 SAS 日志来查看最大记录长度。

2.5 list input 读取空格分开的原始数据
如果原始数据都至少被一个空格分开,那么用 list input 读取数据可能是正确的。List input
是一个很简单的读取数据的方式,但是会受到很多限制。你必须读取所有的数据记录,不能
跳过某些值、缺失值必须用句号“.”代替。字符串数据不能包含空格、长度不能超过 8 个
字符。
而且如果数据文件包含日期变量或者其他需要特别处理的变量, input 将不再适用。 list 虽然很多限制,但仍有大量的文件可以用这种方式读取。
INPUT 语句是数据步的一部分,它告诉 SAS 如何读取原始数据。使用 List input 来写 input 语
句:在 INPUT 关键词之后列出变量名(按照变量在文件中出现的顺序)
,变量名长度在 32
个字节(含)以下,只能包含字母、下划线和数据,并必须以字母或者下划线开头。如果变
量是字符串,后面要价“$”号,值与值之间至少有一个空格,语句要以分号结束。如:

28

这表明输入三个变量,其中 name 是字符串,age 和 height 是数值变量。

例子 你想组织一次青蛙跳跃比赛,现在你记录了每只参赛青蛙的名字、体重、和三次跳跃
的距离,如果某次的跳跃距离不合格,那么就用“.”代替,数据文件 ToadJump.dat 形式如
下:

虽然不是很整洁、但满足 list input 的所有要求(字符串长度小于 8 个字节、不包含空格、值
之间都有至少一个空格,缺失数据也用句号代替)
。Nosiy 的数据溢出到第二行了,但这不影
响,SAS 会按照变量顺序自动跳到下一行读取。如下是读取这个数据的 SAS 程序:

Input 后面是变量名,ToadName 是字符串变量,其他是数值变量;proc print 过程用来输出
数据集中所有的变量和观测值;
title 语句用告诉 SAS 输出顶部的标题,
如果不指定标题,
SAS
将以“the SAS system”作为标题在每一页的顶部。输出的形式如下:

由于 Noisy 的数据溢出到下一行,因此下面的说明会出现在 SAS 日志上:

2.6 column input 读取按固定列排列的原始数据
当一些原始数据的值之间没有空格分开,
或者没用用句号代替缺失值时, input 就不能用。 list 29

但当每个变量的值都出现在数据行的相同位置时,
并且变量值是字符串或者标准数值
(只包
含数据、
小数点、
正负号、
和科学标注的 E。
逗号和日期都不能算) 可以使用 column input
时,
来读取。
相比 list input,column input 有如下优势:
 不要求变量值之间的空格;
 缺失值可以直接用空格代替;
 字符串中可以包含空格;
 可以跳过不需要的变量。
调查数据使用 column input,因为调查答案的记录都是用单个数字(0-9)
,如果每个答案之
间再用空格分开,就会使整个文件会扩大两倍。有地址的数据文件也使用 column input,因
为地址之中常常包含空格,比如街道 Martin Luther King Jr.Boulevard 在 column input 中就可
以当成一个变量而不是五个。
可能用 column input 读取的数据也可以用 formatted input 读取
或者几种方式组合。
Column input 的 input 语句格式如下:input 关键字后接变量名、再接变量的列位置(列位置
是字符或者数值在一行中的位置)
。字符串变量名后仍要用“空格+$”
,变量名之间仍要用空
格隔开。示例如下:

这个语句表明,Name 变量,在行中占据第 1 列第 10 列,为字符串变量,age 占据第 11-13
列,为数值变量,height 占据第 14-18 列,数值变量。

例子 原始数据记录如下:

读取这个数据的 column input 程序如下:

第一个变量 visitingteam 占据第 1-20 列,为字符变量;concessionsales 占据第 21-24 列,为
数值变量,下面几个变量均占据固定的列。输出结果如下:

30

2.7 informats 读取非标准格式的原始数据
有时候原始数据不全是字符串或者数值,
比如类似 1,00,001 这样包括逗号的字符串值,
电脑
就不能读取,其他诸如包含美元符号、十六进制、压缩十进制的数据都是非标准数据。SAS
中,informats 可以用来告诉电脑如何读取这样的数值。
日期是最普通的非标准数据,SAS informats 会把类似 10-31-2003 或者 31OCT03 转换成数字,
日期的起点为 1960 年 1 月 1 日,即这一天的数字为 0。
Informats 的三种普遍格式为:字符串、数值、日期。这三种格式的形式如下:

$代表是字符串、 informats 代表形式
(比如日期的 MMDDYY) w 是宽度、 是小数点的位数、

d
最后是句号 ,
“.” 缺少句号会使得 SAS 把形式
(如 MMDDYY)
当做变量名。
一个简单 formatted input 的简单 INPUT 语句如下:

Name 为字符串变量,占据 10 个宽度,即列位置从 1-10;age 为数值变量,占据 3 个宽度,
列位置从 11 到 13;height 也为数值变量,占据 5 个宽度,包括了 1 位小数点和小数点本身,
列位置从 14-18(如 150.3)
;最后是日期变量,从第 19 列开始,形式为 MMDDYY。

例子 原始数据如下:

读取这个数据的 informat 程序如下:

31

年龄后面的+1 代表跳过一列,即原始数据中年龄后面有一个空格。最后的 5 个变量 score1-score5,都要求有同样的形式,4.1。将变量名和形式分别放在两个括号集中,可以一 次性定义很多变量。输出结果如下:

2.8 可选择变量形式
一般使用的变量形式的定义,以及它们的宽度范围和默认宽度如下:

32

33

2.9 混合读取方式
每种数据读取方式都有其优势,list 最简单,column 和 formatted 虽然复杂但是不要求变量
之间的空格,并且变量名中可以包含变量,而且 formatted 可以读取特殊的数据比如日期。
SAS 可以灵活的让你搭配不同的读取方式,以达到最大的方便。
例子 如下的原始数据记录了美国国家公园的信息:姓名(name)
、所属周(state)
、建立时
间(year established)
、占地面积(size inacre)


34

有多种方式进行数据读取,下面的程序是方式之一:

其中 ParkName 是 column 方式读取,State 和 Year 是 list 方式读取,Acreage 是 formatted 方
式读取,输出结果如下所示:

混合读取方式有时会遇到问题:SAS 通过一个指示器标注位置,来读取原始数据的一行,但
每种读取方式对指示器的使用稍有不同。List 方式下,SAS 自动找到非空格区域并开始读取; column 方式下,SAS 读取你所指定的特定位置;informatted 方式下,SAS 不理会指示器的标
准,只是依次的读取。这时,就会需要列指示器@n,来人为的让 SAS 的读取直接跳至某列。
在上面的程序中,列指示器@40 告诉 SAS 在读取 Acerage 变量之前,移动到第 40 列去,如
果移去指示器,程序为:

输出结果如下图所示:

之所以出现这样的结果,要看原始文件的列坐标排列:

35

Comma9 告诉 SAS 读取 9 列,SAS 就会读取包括空格在内的 9 列,这便会导致输出结果的问
题。

2.10 读取凌乱的原始数据
有的数据排列混乱,
长度不一。
这样的数据需要新的工具处理:
@’character’ 列指示器和 colon modifier。 @’character’ 列指示器 2.9 中提到@column 列指示器可以让 SAS 直接从某列开始读取数
据。
但有时候你不知道要读取的数据是从哪列开始,
此时你只要知道要读取的数据的前面那
个字符或单词即可。比如有一个关于狗的原始文件,你想要读取狗的品种号,但文件排列很
凌乱,只知道品种号跟随在单词 breed 后面,那么可以用如下方式读取:
Input @’Breed:’ DogBreed $;

colon modifier 由于 input 读取字符串变量默认为 8 个字符,因此在上例中如果狗的品种
名(dogbreed)超过 8 个字符,则需要定义长度,定义为$length,在该长度中,空格也算在
内。如果要使 SAS 读取过程中遇到空格则不再继续读取,则要在$length 前面加冒号“:”

比如原始数据中有这么一行:
My dog Sam Breed:Rottweiler Vet Bills:$478
如果用上述不同方法读取,会有不同结果:

例子 web 日志是凌乱数据的一个很好例子,下面是一个网站的 web 日志,数据开始于访问
IP,后面有访问日期、访问文件名等信息。

现在想要读取访问日期和访问的文件名,
但是它们每行中所占据的列的位置都不同,
而且文

36

件名的长度每行都不一样,那么 SAS 读取这种文件通过如下方式:

@’[’作为列指示器,告诉 SAS 读取[之后的内容,@’GET’告诉 SAS 读取 GET 之后的内容,由
于文件名作为字符串变量,
这里基本都会超过 8 个字节,
因此后面附加:$20。
输出结果如下:

2.11 跨行观测值的读取方式
一般原始文件中一行代表一个观测值,
有时会出现一个观测值跨行的情况。
由于 SAS 会自动
转到下一行读取数据,直到读取这个观测的所有变量(input 语句中给出)
,所以你需要告诉
SAS 什么时候不要换行,以便在日志中不出现 SAS-went-to-a-new-line 的暂停说明,此时需要
在 INPUT 语句中加行指示器。
(????)
行指示器,斜线/:告诉 SAS 跳至原始数据的第二行;#n:跳至第 n 行,n 代表原始数据中
某观测值的行数(#2 则让 SAS 跳至某观测值的第二行)
,#n 不能用来回跳。

例子 有一组关于温度的数据,temperature.dat 第一行代表城市和州,第二行代表本日最高
温和最低温,第三行代表史上最高温和最低温。

37

用如下的程度来读取这份数据:

Input 后面告诉 SAS 读取第一行的 city 变量和 state 变量,斜线/告诉 SAS 移动到下一行的第
一列,
以便读取 normalhigh 和 normallow。 告诉 SAS 移动到第三行的第一列以便继续读取
#3
观测值的 recordhigh 变量和 recordlow 变量。这里/可以用#2 代替,也可以用/代替#3。
日志记录如下:

从日志中可以看出,虽然原始原件占了 9 行,但只有三个观测值。
输出结果如下:

第二章 将你的数据放入 SAS(2.11-2.21)
2.12 一行有多个观测值的原始文件读取

当一行出现多个观测值时,可以在 input 语句结尾
加一个停止符号@@

38

例子 有一个关于降水量的数据,precipitation.dat,文件包含城市名、州名、月平均降水量、
月平均降水天数:

这个数据文件中,第一行包含了两个观测值,可以用@@的程序读取:

日志记录如下:

中间的说明,SAS went to a new line when INPUT statement reached past the end of a line.是指
读取第二个值时达到第一行末尾,
并转到下一行继续读取。
通常这些信息会预示一个问题出
现,但在这里它们都是你所想要的(为什么?)
输出结果如下:

39

2.13 读取原始数据的部分观测值

有时候只需要读取原始数据的部分观测值,比如只
需要年鉴中的女性数据、收入超过 10 万的人口数
据等。
此时的数据读取方式如下:在 SAS 读取某一行观测
值时,首先读取足够的变量以便决定是否需要保留此行的观测值。然后在 input 语句结尾加
符号@,叫做 a trailing at(called a trailing at)
,这告诉 SAS 先停在(hold)此行,同时用 IF
语句检测此观测值是否满足需要,
如果是,
那么可以再用一个 input 语句来读取现有的变量。
例子 有一个关于当地交通的数据,traffic.dat 数据包含街道的类型(freeways 和 surface)

街道类型、早晨每小时的机动车流动量、晚上每小时机动车流动量。

如果现在你只需要 freeway 的数据,可以用下述程序:

第一个 input 读取字符串变量,
@是 SAS 停留在观测值上并用 IF 检测,
第二个 input 读取 input
后面的变量值。
程序执行后日志包括两部分说明,
一个说明读取了 8 个记录,
另一个说明新数据集中只包含
三个观测值。

输入结果如下所示:

40

@ vs @@ @的作用类似于@@,都是行停留指示符(line-hold specifiers)
,不同地方在于停
留多久,@能使 SAS 停留到下一个 input 语句(也不换行)
,@@能使停留的时间到下一个
data 步(也不换行)

比如这段代码: data test; infile cards ; input x @; input y; input z @@; cards; 123456
7 8 9 10 11 12
13 14 15 16 17
;
run;

test 输出结果就是:

2.14 用 infile 语句中的选项控制输入
读取原始数据时,SAS 做了某些假设,比如从第一行开始读取数据,对于跨行观测值,会自
动转到下一行继续读取。但有的特殊数据不满足这些假设,infile 语句中的选项可以让 SAS
读取这些特殊数据。

FIRSTOBS= FIRSTOBS= 选项告诉 SAS 从哪一行开始读取数据,当数据开头有些说明信息,
或者想要跳过某些行时,这个选项很有用。例如,如下原始数据文件中,开头两行是关于数
据的描述:

41

那么用如下程序可以让 SAS 从第三行开始读取数据:

OBS= OBS=告诉 SAS 一直读取到哪一行位置,
注意是行而不是观测值
(有的观测值占据多行)
比如,如下的原始数据文件中,结尾处还有一句不需要的数据说明时。就需要这个选项:

用 FIRSTOBS=3 和 OBS=5 就可以读取第三行到第五行的数据:

MISSOVER 在 input 语句中输入的几个变量,SAS 在观测值中就读取几个变量,如果一行未
读完,则进入下一行直到输入的变量都读取了变量值。missover 可以让 SAS 不进入下一行读
取,未赋值的变量就使其成为缺失值。当如下这种数据,就需要 missover 选项,一个学生
应该有 5 门课的成绩,但由于最后两门是自学课程,不是所有学生都完成,故而缺失:

如下的程序可以让 SAS 将 Nguyen 第五门课的成绩设为缺失值,从而不牵扯到下一行:

Truncover 使用 column input 或 formatted input 输入时可能会需要这个选项,因为这时有
的数据行比其他的短。如下的原始数据中,由于三行的长度都不一样,input 中只能指定最
长的一行:

42

程序如下:

这里指定了第二行的长度 street $ 22-37,
但是第一行 maple ave.并没占够至第 37 列
(注意后
面是没有空格的)
,故而必须用 truncover,否则会转到下一行继续读取,第三行情况也是。

2.15 用数据步读取分隔符文件(delimited files)
分隔符文件中,变量值之间会用一些特殊的字符隔开,比如逗号或制表符。DLM=和 DSD 选
项可以让 SAS 容易的读取这些分隔符文件。

DLM= 用 list input 读取文件时,变量值之间应该用空格隔开。对于其他的分隔符,可以用
DLM=,DELIMITER=选项来指定,从而可以读取文件。
例子 如下的数据中,学生姓名、每周读的书的数目是用逗号隔开的:

用选项来指定分隔符即可:

如果原始数据是用制表符隔开的,那么可以使用 DLM=’09’X 来指定,因为制表符的十六进制
值是 09,如果你电脑使用 EBCDIC(扩充的二进制编码的十进制交换码)
,那么应该用
DLM=’05’X。

DSD DSD (Delimiter-Sensitive Data)有三个作用:忽略引号中数值的分隔符;自动将字符数据
中的引号去掉;将两个相邻的分隔符当做缺失值来处理。并且,DSD 默认分隔符为逗号,如
果数据中的分隔符不是逗号,那么要用 delimiter 来指定。比如,读取一个制表符为分隔符、
并且用两个制表符代表缺失值的数据文件,则要用下面的语句:
INFILE ’file-specification’ DLM=’09’X DSD;

CSV 文件 CSV 文件,Comma-separated values files,是可以用 DSD 选项的文件类型。Excel
可以储存 CSV 格式的文件。

例子 某咖啡馆,老板每晚请不同的乐队表演来吸引顾客,他记录了乐队名称、演出日期、

43

晚上 8 点、9 点、10 点、11 点的顾客数量:

注意,其中有一个乐队的名字中用逗号来分隔,并且使用了引号。最后一条记录中还有一个
缺失值,用两个连续的逗号表示。INFILE 语句中的 DSD 选项可以用来读取这个文件,并且,
由于每个记录长度不一样,还需要用 missover:

注意 bandname 和 GigDate 两个变量使用了冒号修改器,冒号修改器告诉 SAS 读取信息的
长度(BandName 为 30,GigDate 为 10)
。输出结果如下:

2.16 用导入过程(IMPORT procedure)读取分隔符文件。
Proc import 会浏览你的数据文件,自动决定变量类型(字符串或数值)
,为字符串变量分配
正确的长度,辨认出日期变量。Proc import 会将两个连续的分隔符视为缺失值,会读取引号
中的变量值。一行读完后,会自动分配缺失值给未赋值的变量。Also,if you want,you can use the first line in your data file for the variable names。导入过程(IMPORT procedure)自动问你
写下数据步,这可以在提交之后的日志窗口中查看。
一个导入过程(IMPORT procedure)的最简单形式:
PROC IMPORT DATAFILE=’filename’ OUT=data-set;
用语句 DATAFILE=’filename’读取文件名,用 OUT=data-set 创建 SAS 数据集。SAS 会通过文件
的扩展名来检测文件的类型:

44

如果文件没有正确的扩展名,
或者是 DLM 格式的,
必须在 proc import 语句中用 DBMS=option。
如果想要创建的数据集名字已经存在,
那么要用 replace 选项代替。
一个使用 replace 和 dbms
的例子。
PROC IMPORT DATAFILE=’filename’ OUT=data-set DBMS=identifier REPLACE;
导入过程
(IMPORT procedure)
从数据文件中的第一行获取变量名,
可以通过在 PROC IMPORT
后面增加 GETNAMES=NO 语句来改变这种默认,PROC IMPORT 会分配给变量名字:VAR1,
VAR2,VAR3 等。如果你的数据文件是 DLM 类型的,PROC IMPORT 会假定分隔符为空格,用
DELIMITER=可以改变默认的分隔符。如下是一段有上述代码的程序:

例子 下面还是使用咖啡馆中,乐队表演的例子(2.15)
,注意其中有一个乐队的名字中用逗
号来分隔,并且使用了引号:

用 proc import 读取数据的代码如下:

输出结果如下,注意 GigDate 的日期格式能够被 proc import 辨认出来:

45

2.17 用导入过程(IMPORT procedure)读取 PC 文件
如果安装了 SAS/ACCESS 模块,导入过程(IMPORT procedure)可以导入一些 PC 文件类型。
它会浏览你的文件以决定变量类型,并默认使用数据的第一行来分配变量名。Windows 操
作环境中可以导入 excel、Lotus、dBase、和 Access 文件。Unix 系统中可以导入 dBase 文件,
并且从 SAS9.1 开始,
Unix 系统也可以导入 excel 和 access 文件。 windows 环境中有一个不

需要 SAS/ACCESS 模块的方法——Dynamic Data Exchange(DDE),将在 2.18 中讲解。

Microsoft Excel,Lotus,和 dBase 文件 下面是用导入过程(IMPORT procedure)读取
PC 文件的一般过程:
PROC IMPORT DATAFILE=’filename’ OUT=data-set DBMS=identifier REPLACE;
如果读取的文件是如下类型,就不用 DBMS=OPTION。

在读取 excel 时,有时需要指定要读取的是哪一个工作薄——sheet
SHEET=name-of-sheet;
默认情况下,导入过程(IMPORT procedure)会从工作薄的第一行中读取变量名。如果不需
要,可以用如下代码使得 SAS 给变量赋名为 F1,F2 等。

46

GETNAMES=NO;
Microsoft Access Files 读 取 这 种 文 件 需 要 用 DATABASE= 和 DATATABLE= , 而 不 是
DATAFILE=option。

下面的是 DBMS 可以辨认的 Access 文件

例子 有如下的 EXCEL 数据:

读取的 proc import 程序:

输出结果如下:

2.18 用 DDE 读取 PC 文件
DDE,动态数据交换(Dynamic Data Exchange)
,读取 PC 文件的优点为:可以直接访问存于
PC 文件中的数据,不要求购买其他 SAS 产品;缺点为:只能用在 windows 环境下,只能在
程序运行时(比如 excel)
,SAS 才能进行读取。
有几种方式可以用 DDE 访问数据:

47



复制数据到剪贴板



指定 DDE 三元组



从 SAS 中启动 PC 程序,然后读取数据。

复制数据到剪贴板 可以直接复制数据至剪贴板,然后再 SAS 程序的 DDE FILENAME 语句
中是使用 CLIPBOARD 关键字。比如,excel 中有如下的工作薄:

复制 A2 到 G5,然后在不关闭 excel 的状态下,提交如下 SAS 程序:

FILENAME 语句将指代的文件(BASEBALL)定义成 DDE 类型,并指定从剪贴板中去读取它
(CLIPBOARD)
。DDE 默认空格为分隔符,如果变量值之间有空格,则要在 INFILE 语句中用
NOTAB 选项和 DLM=’09’X 选项,前者告诉 SAS 在变量值之间放置制表符,后者告诉 SAS 将制
表符定义为分隔符。如果数据中有缺失值,则要在 INFILE 中加入 DSD 和 MISSOVER 选项,前
者将两个连续的分隔符视为缺失值,
后者告诉 SAS 如果此行读完,
不要进入下一行给未赋值
的变量赋值。

指定 DDE 三元组 这种方法可以不用复制数据,直接指定出文件的 DDE 三元组。DDE 三
元组的形式为:application| topic ! item。
有一种方法可以在 SAS 中直接查看文件的 DDE 三元组,方法为:复制数据至剪贴板里,触
发 SAS 会话,从解决方案(Solution)菜单中选择附件(accessories)——DDE 三元组。一个
窗口会出现你复制文件的 DDE 三元组。比如,一个工作薄的 DDE 三元组为:
Excel|C:\MyFiles\[BaseBall.xls]sheet1!R2C1:R5C7
读取这个文件的 FILENAME 语句为:
FILENAME baseball DDE'Excel|C:\MyFiles\[BaseBall.xls]sheet1!R2C1:R5C7';
从 SAS 中启动程序 这种方法可以不用在运行 SAS 之前启动数据程序。想要从 SAS 中启动程
序,然后读取数据,则首先需要 NOXWAIT 和 NOXSYNC 系统选项,然后使用 X 语句,一个例
子:

48

NOXSYNC 和 NOXWAIT 语句告诉 SAS 不要等待用户输入。X 语句告诉 windows 执行或打开引
号中路径的文件,注意这里路径设置了两个引号,如果路径中有空格,则要设置两个引号。
使用这种方法,必须要在 FILENAME 语句中指定 DDE 三元组。

2.19 临时和永久数据集
SAS 临时数据集只在目前工作或会话中存在,关闭 SAS 或结束工作时则删除;永久数据集当
关闭 SAS 或结束工作时仍然存在。

SAS 数据集名 所有的 SAS 数据集都有用句号分开的两层数据集名,如 work.a。第一层前
缀 work 是逻辑库名,第二层是在逻辑库中用于辨别自己的成员名。
名字的规则是,以字母或下划线开头,并且名字中只能包含字母、数字和下划线。而且,库
名不能超过 8 个字节,而成员名却可以达到 32 个字节。
大部分数据集通过数据步创建,过程步也可以创建。如果指定了一个前缀不为 work 的两层
数据集名,则这个数据集就是永久的。如果不指定前缀,则默认数据集是临时的,自动分配
到 work 逻辑库中。下面是一些数据集名,对于的逻辑库,成员名,类型:

临时数据集 如下的程序创建并打印了一个名为 DISTANCE 的永久数据集:

这里,只指定了成员名 distance,自动分配到 work 库中,日志窗口中有说明:
NOTE:The data set WORK.DISTANCE has 1 observations and 2 variables.

永久数据集 可以在资源管理器窗口中定义一个新库使用:

49

也可以通过如下程序:

那么日志窗口就会出现如下说明:
NOTE:The data set MYLIB.DISTANCE has 1 observations and 2 variables.
这是一个永久数据集,因为前缀不是 work。

2.20 用 LIBNAME 语句使用永久数据集
LIBNAME 语句的基本形式为:LIBNAME libref’your-SAS-data-library’;
LIBNAME 的后面,需要指定库名和存放的路径,在个人操作环境下 LIBNAME 语句的基本形
式为:

创建永久数据集 如下的例子创建了一个永久 SAS 数据集,
包含了 magnolia trees 的一些信
息。每一种树,原始文件都包含它的科学名、普通名、最大高度、第一次开花的年龄、是
evergreen 还是 deciduous、以及花的颜色。

50

下面的代码将会创建一个 PLANTS 的逻辑库,路径为 C 盘下的 MySASLib。然后从原始文件
Mag.dat 中读取数据,并创建一个名为 MAGNOLIA 的永久数据集,存在 PLANTS 库中。

日志窗口会出现如下说明:
NOTE:The data set PLANTS.MAGNOLIA has 5 observations and 6 variables.
如果在电脑中打印文件的地址目录,会发现文件名不是 PLANTS.MAGNOLIA。这是因为操作
系统有自己对文件命名的方式,这个文件,在 Windows,UNIX,和 OpenVMS 操作环境中名字
为 magnolia.sas7bdat,在 OS/390 或者 z/OS 环境中,文件名就会如 LIBNAME 语句中定义的 data-set-name 形式。

读取永久数据集 如果你想打印出上例中创建的数据集,可以用如下语句:

这次 LIBNAME 语句中的库名为 example,但缺失同样路径,逻辑库名可以改变,但成员名
MAGNOLIA 却一样。输出如下:

2.21 通过直接指代使用永久数据集
可以通过直接指代来使用 SAS 数据集,且不需要自己定义,SAS 为你做好。
直接指代,依据系统不同,使用方法也不同,如下:

51

可以看到,一些系统的语句中需要指出路径,但如果遗漏了路径,SAS 自动使用当前路径,
比如这样一个创建名为 trees 的永久数据集的代码:
DATA ‘trees’;
UNIX 和 OPENVMS 操作环境下,当前的路径默认为启动 SAS 的路径,可以通过工具(TOOLS)
下拉菜单的选项(OPTIOPN)菜单来改变这种默认,windows 环境下当前路径会显示在 SAS
窗口底部。可以通过双击这个路径来改变默认。

例子 如下还是关于 magnolia trees 的这个例子,

下面的代码将从原始文件 mag.dat 中读取数据,
创建一个名为 MAGNOLIA 的永久数据集,存
放在 C 盘的 Mysaslib 路径中:

相应的输出窗口显示如下:
NOTE:The data set c:\MySASLib\magnolia has 5 observations and 6 variables.
如果打开 MySASLib 文件夹,会发现一个名为 magnolia.sas7bdat 的文件。在没指定库的情况
下,SAS 会自动为你创建一个库,在资源管理器窗口中可以看到,下图是 SAS 为 magnolia
创建的库。

用直接指代读取 SAS 数据集 可以直接用引号+路径的方式读取永久数据集,比如打印 magnolia 数据集可以:

52

输出窗口如下:

2.22 列出 SAS 数据集目录
由于 SAS 是自文档化,即在自动储存了数据集的信息,因此可以通过 contents 过程来查看
SAS 数据集的描述。
Proc contents data=data-set
如果遗漏了 data=的语句,SAS 自动列出最近创建的数据集
例子 如下的程序创建了一个数据集,并且使用 proc contents。数据步中使用了 label 语句, label 语句为变量打上标签,
并储存在数据集中,
在打印时会显示。
过程步中也可以使用 label,
但只在 proc contents 中有效,不会储存在数据集中。Informat 和 format 可以指定信息和格
式,储存在数据集中,也可以在过程步中使用,但不储存在数据集中。

输出如下:

53

第三章 开发你的数据
3.1 创建并重新定义变量
可以通过分配语句来创建并重新定义变量,基本形式为:
Variable=expression
Variable 是变量名,expression 可以是常量、其他变量、或者数学表达式。分配语句的基本
类型有:

54

Expression 是数学表达式时,需要遵循运算法则,先算指数、再算乘除、之后是加减。可以
用括号改变运算等级。

例子 如下是一个农产品估重数据,每位农民要求对他们的番茄、南瓜、豌豆、葡萄进行估
重:

下面代码从 garden.dat 原始文件中读取数据,并进行修改:

这个程序包含了 5 句分配语句,
第一个将 14 赋值给 zone,
第二个使 type 等于一个字符串常
量……打印出的结果中,既包括旧变量,又包括新变量:

由于观测值 susan 的 peas 变量出现了缺失值,因此这个观测值的 total 和 pertom 变量也出
现了缺失值。日志窗口的说明如下:
NOTE:Missing values were generated as a result of performing an operation onmissing values.

3.2 使用 SAS 函数
SAS 有 400 多个函数,主要涵盖如下领域:

55

函数基本形式:function-name(argument,argument,…),所有的函数都需要括号,即使没有参
数。下面的程序计算使用 MDY 函数,MDY 函数需要三个参数:月、日、年。
Birthday=MDY(MonthBorn,DayBorn,YearBorn);
函数可以嵌套,即一个函数可以是另一个函数的参数。比如:NewValue=INT(LOG(10));

例子 有一个南瓜雕刻比赛的数据,pumpkin.dat 数据包含了参赛者的名字、年龄、雕刻的
南瓜类型、报名日期、五位裁判给出的分数。

下面的代码读取了数据、创建了两个新变量、转换了一个大小写:

AvgScore 使用均值函数创建的变量,计算参数的均值,这与直接相加再除以 5 不同的地方
在于,当参数中出现缺失值时,直接相加再除的方法返回缺失值,而均值函数计算非缺失参
数的均值。
DayEntered 变量使用 DAY 函数,返回日期在一个月里的天数。
Type 用大写转换函数将原来的字母转换成大写字母。
结果是:

56

3.3 选择 SAS 函数
3.4 使用 IF-THEN 语句
条件语句 IF-THEN 的基本形式为:IF 条件 THEN 执行;
比如:IF Model='Mustang' THEN Make='Ford';
条件语句中的一些基本比较符号:

还有 IN 比较符,比如这句中 IF Model IN('Corvette','Camaro') THEN Make='Chevrolet';代表当
Model 为 Corvette 或 Camaro 的时候,将 Chevrolet 赋给 Make。
一个条件只能有一个执行,如果要多个执行,则需要 DO 和 END 关键字。

可以用 AND 和 OR 来定义多个条件:IF Model='Mustang' AND Year1000000 THEN CALL SYMPUT(”bestseller”,BookTitle);

注意 用 call symput 创建的宏变量与赋值变量不能够用在同一个数据步中。
因为直到数据步
执行之后,SAS 才会将一个值赋给宏变量。

例子 仍然是花店销售的数据:

现在想找到单个订单最大的客户,并打印出这个客户的所有订单。

第一段代码读取原始数据,proc sort 按照 quantity 降序排序,最大单个订单将会出现在第一
个观测值上。
第二段代码使用 call symput,当_N_为 1 的时候,分配变量 CustomerID 的值给宏变量
&SELECTEDCUSTOMER,
在数据步中,
我们所需要的就是这么多,
因此使用 stop 语句告诉 SAS
停止数据步。Stop 语句也可以不要,但为了提高效率,它可以告诉 SAS 不要再读取下面的
观测值了。
第三段代码,
此时 SAS 直到数据步已经结束,
因此执行数据步。
宏变量&SELECTEDCUSTOMER
的值为 356W,结果如下:

141

7.7 排除宏错误的 bug
避免宏错误 尽可能先用标准 SAS 代码写你的程序,当没有错误了,再转成宏代码,先一
次增加一个宏逻辑特征。再增加%macro 和%mend。再增加宏变量。
引用问题 宏处理器不能解决但引号内的宏。所以要使用双引号。比如下面的例子,单引
号不能读取宏变量的值:

排除宏错误 bug 的系统选项 这五个系统选项会影响 SAS 写入日志的信息。粗体为默认的设
置。
MERROR|NOMERROR
如果你调用了一个 SAS 不能找到的宏,则会报警。
SERROR|NOSERROR
如果你使用了一个 SAS 不能找到的宏,则会报警。
MLOGIC|NOMLOGIC
SAS 会在日志里打印关于执行宏的详细信息。
MPRINT|NOMPRINT
SAS 在日志里打印由宏产生的标准 SAS 代码。
SYMBOLGEN|NOSYMBOLGEN
SAS 在日志里打印宏变量的值。
最好只在排除 bug 的时候才将 MLOGIC,MPRINT 和 SYMBOLGEN 打开,
否则它会让你的日志阅
读起来很困难。想要关闭,则用系统语句:
OPTIONS MPRINT NOSYMBOLGEN NOMLOGIC;

Merror 信息 如果 SAS 不能找到一个宏,并且 Merror 选项也是开着的,那么 SAS 会打印这
样的信息:
WARNING:Apparent invocation of macro SAMPL not resolved.
确认宏名字的拼写是否正确。

SERROR 信息 如果 SAS 不能在开放代码中处理一个宏变量,
并且 serror 选项是开着的,
SAS
会打印这样的信息:
WARNING:Apparent symbolic reference FLOWER not resolved.
首先确认是否拼写错误,再次查看视角,即是否在外部使用了一个局部变量。

MLOGIC 信息 如果这个选项开启,SAS 会在日志中打印由宏产生的 SAS 语句。如果在
MPRINT 选项中运行了%SAMPLE,日志会如下所示;

SYMBOLGEN 信息 如果这个选项开启,SAS 会在日志窗口中打印每个宏变量的值。如果在
SYMBOLGEN 选项中运行%SAMPLE,日志会如下所示:

142

第八章 使用基本统计过程
8.1 用 PROC UNIVARIATE 检验数据分布
PROC UNIVARIATE 是 Base SAS software 的一部分,产生统计量以描述单个变量的分布。
这些统计量包括均值、中位数、mode、标准差、偏度和峰度。
Proc UNIVARIATE 的使用很简单,在 proc 语句之后,用 var 语句指定一个或多个变量:
PROC UNIVARIATE;
VAR variable-list;
没有 var 语句,SAS 会计算所有数值变量的统计量。Proc 语句中也可以指定其他选项,
比如 plot 或 normal:
PROC UNIVARIATE PLOT NORMAL;
Normal 选项进行正态测试,PLOT 画出数据的三个图(stem-and-leaf plot,box plot,and normal probability plot),可以使用 BY 语句来对单个组进行分析。
(前提是要进行 sort 排序)

例子 下面的数据是一个班级的学生分数,每一行是 10 位同学的分数:

下面代码读取数据并运行 PROC UNIVARIATE:

结果为:

143

8.2 用 proc means 产生统计量
由 Proc univariate 产生的统计量,大部分都可以由 proc means 产生,前提是你要要求它
产生。Proc univariate 会默认打印所有的统计量:mean,variance,skewness,quantiles,extremes,t tests,standard error。而用 proc means 你可以要求打印你需要的统计量。
Means 过程只需要一个语句:
PROC MEANS statistic-keywords;
默认 means 会产生均值、缺失值数、标准差、每一个数值变量的最小最大值,下面的 list 列出可以需要的统计量,可以将它们加入 proc mean 语句中:
CLM
双侧置信区间
RANGE
范围
CSS
调整的平方和
SKEWNESS
偏度
CV
变异系数
STDDEV
标准差
KURTOSIS
峰度
STDERR
平均标准差
LCLM 单侧(低侧)置信区间
SUM 总和
MAX 最大值
SUMWGT 权数变量之和
MEAN 平均数
UCLM 单侧(高侧)置信区间
MIN 最小值
USS 未调整的平方和

144

N 非缺失变量值的个数
NMISS 缺失值变量个数
MEDIAN 中位数
Q1(P25)25%quantile
P1 1%quantile
P10 10%quantile
P95 95%quantile

VAR 方差?
PROBT probability for Student’s t
T Student’s t
Q3(P75)75%quantile
P5 5%quantile
P90 90%quantile
P99 99%quantile

置信区间 默认置信区间的置信水平为 0.05 或 95%,用在 means 语句中使用
ALPHA=option 可以得到不同的置信度。
比如现在想要 90%的置信区间,
就要指定 ALPHA=0.10,
并要有 clm 选项,语句为:
PROC MEANS ALPHA=.10 CLM;
VAR 语句 means 会默认为所有的数值型变量产生统计量,如果不需要,那么用 var 语
句中指定你需要的变量,基本形式:
PROC MEANS options;
VAR variable-list;

例子 如下是书店中关于儿童读物的书本页数:

Means 可以产生平均页数及 90%的置信区间:

结果为:

8.3 用 proc freq 检验分类数据
PROC FREQ,是 base SAS 的一部分,
可以产生很多统计量来检验分类数据的相关性。
基本
形式为:
PROC FREQ;
TABLES variable-combinations/options;

选项 这里有一些统计选项:

145

AGREE
检测分类性,包括 McNemar’s test,Bowker’s test,Cochran’s Q test,and kappa statistics CHISQ
用卡方统计量检测一致性和同类性。
CL
一致性检测的置信区间
CMH
Cochran-Mantel-Haenszel statistics
EXACT
Fisher’s exact test for tables larger than 2X2
MEASURES
一 致 性 测 量 , 包 括 Pearson and Spearman correlation coefficients,gamma,Kendall’s tau-b,Stuart’s tau-c,Somer’s D。
PLCORR
polychoric correlation coefficient
RELRISK
relative risk measures for 2X2 tables
TREND
the Cochran-Armitage test for trend

例子 有人抱怨公交班车总是到站太慢,而快速巴士却可以准时到达。现在想弄明白车
的种类与是否准时之间的关系。现在有一组数据,包括两个变量:车类型(E for express or R for regular)
,是否准时(L for late or O for on time)
,每一行包含 10 个观测值:

下面的代码读取数据,用 chisq 选项运行 proc freq,

结果为:

146

8.4 用 proc corr 检测相关性
基本形式为:PROC CORR;
它告诉 SAS 计算最近创建的数据集中的所有数值变量两两相关系数。
可以和 VAR 和 with
来指定变量:
VAR variable-list;
WITH variable-list;
VAR 语句中的变量出现在交叉表顶部,而 with 的变量出现在左侧。
默认情况下,proc corr 计算 Pearson 积差相关系数。可以增加选项要求非参数的相关系
数。下面的 SPEARMAN 选项告诉 SAS 计算 Spearman’s rank correlations,而不是 Pearson’s

147

correlations:
PROC CORR SPEARMAN;
其 他 还 有 如 HOEFFDING(for Hoeffding’s D statistic) 何 KENDALL(for Kendall’stau-b coefficients) 例子 有一份关于学生学习的数据,变量为考试分数,一周花在电视上的小时数,一周
花在学习上的小时数,注意每行包括五个学生数据:

代码为:

结果为:

报告开始于每个变量的描述统计量,接着列出相关矩阵,包括:相关系数(pearson)

P 值。

148

8.5 使用 proc reg 做简单的回归分析
REG 过程使用最小二乘法拟合线性回归模型, SAS/STAT 产品的一部分。 使用逐步

Reg
法、前进法、后退法进行自变量的筛选。SAS/STAT 其他的产品可以进行非线性、混合线性、 logit 回归。SAS/ETS 产品中有时间序列回归的分析。
Reg 只需两步:用 PROC REG 语句开始,用 MODEL 语句指定分析模型。基本形式为:
PROC REG;
MODEL dependent=independent;
Model 语句中,自变量在左边,因变量在右边。
Plot 语句是 reg 过程中许多可选的语句之一。可以用 plot 语句产生数据的散点图。如
果安装了 SAS/GRAPH 模块,PROC REG 将使用这个模块来产生散点图。产生散点图语句:
PLOT dependent*independent;
如果没有 SAS/GRAPH 模块,则需要在 proc reg 语句中使用 LINEPRINTER 选项,以产生 plots。由于没有 SAS/GRAPH 模块不能产生回归线,需要用预测值代替观测值来拟合出线。
下面的代码显示了用 reg 过程产生数据的单个散点图和预测值:
PROC REG LINEPRINTER;
MODEL dependent=independent;
PLOT dependent*independent='symbol'P.*independent='symbol'/
OVERLAY;
Symbol 的值指定 SAS 使用哪种标记来标注数据点,
如果不指定, 会直接使用数字。
SAS
P.是代表预测值的关键词。
有很多中选项可以选择,
来绘出回归分析的结果。
比如可以绘出残差值、
学生化残差、
Cook’s D influence statistics、置信区间。如果有 SAS/GRAPH 模块,那么有很多方法来高质量
的控制输出的外观。
例子 在儿童垒球比赛上,有人说,选手多高,他就能将球击多远。想从统计角度来
验证,收集了如下的数据,分别是身高(英尺)
、三次击球最长的长度(英尺)


下面代码读取数据并做回归:

在 model 和 plot 语句中,距离是自变量、高度是因变量。输出结果将在 8.6 讨论

8.6 读取 proc reg 的输出
Reg 的输出有几个部分,方差分析和参数估计通常输出在一页。有些选项语句,比如

149

plot,在另外的页面中产生。
这部分的输出是由如下 proc reg 语句产生的结果:

第一部分是方差分析的结果,给出了模型对数据拟合的程度:

参数估计的结果如下:

参数分析的结果可以构建模型:
Distance=-11.00859+2.89466*Height
下面的图形显示了 plot 语句的结果,如果有 SAS/GRAPH 模块,proc reg 会描出数据点
和回归线。上面打印出方程,右边显示统计量:

150

就这个例子来看,球飞出去的长度确实和击球人的身高有关系,模型是显著的,但是
两者之间的关系不是很明显(R-square=0.3758)
,可能年龄、经验会是比身高更好的预测变
量。

8.7 使用 proc anova 做单因素方差分析
Proc anova 是 SAS/STAT 模块的一部分,许可证独立于 BASE SAS。
方差分析有两个基本语句:CLASS 和 MODEL,基本形式为:
PROC ANOVA;
CLASS variable-list;
MODEL dependent=effects;
Class 描述分类变量,并要在 model 语句之前,对于单因素方差分析,只需要列出一个
变量。Model 语句描述了自变量和效应(effects)
。对于单因素方差分析,效应就是分类变
量。每组的观测值数要求一样,这样的数据为平衡的。
Proc anova 有很多选择语句,最常用的是 means,计算出 model 语句中任何一种主效
应的自变量的均值。
另外, means 还可以做几种多重比较检验,
包括 Bonferroni t tests(BON),
Duncan’smultiple-rangetest(DUNCAN) , Scheffe’smultiple-comparison procedure(SCHEFFE) , pairwise t tests(T),和 Tukey’s studentized range test(TUKEY)。Means 语句的基本形式为:
MEANS effects/options;
Effect 可以为 model 语句中的主效应。选项为希望使用的多重比较检验的名字。

例子 有一份关于几个篮球队员身高的数据,变量为队名、身高,注意每行有六个观
测值:

151

因为每组都有 12 个队员,所以数据是平衡的。现在想知道哪一组最高,因此还要用 means 语句,并选择 Scheffe’s multiple-comparison 过程来比较均值。代码为:

结果将在 8.8 中讨论:

8.8 读取 proc anova 的输出
Proc anova 的输出至少有两个部分,首先打印出有一个表,给出分类变量的信息:水
平数、变量值、观测值数。再次打印出变量表的分析。如果使用了类似 means 这样的语句,
那么其结果将接在后面。
8.7 中想要检验是否组与组之间的升高有区别,使用 proc anova 语句如下:

第一部分给出了分类变量的信息:

分类变量 team 有五个水平:blue,gold,gray,pink,和 red。第二部分是方差分析的表:

152

因为模型是显著的,因此可以认为不是所有组的队员身高都相同。Means 语句中的
SCHEFFE 选项比较了不同组的身高。

8.9 统计分析的图形界面
统计分析的结果也可以用 Graphical User Interfaces 来完成。
SAS Enterprise Guide、分析家 、SAS/LAB 和 SAS/INSIGHT

153

第九章 导出数据
9.1 导出数据的方法
将数据导出到其他应用程序 有三个基本方法将数据导出到其他应用程序: delimited files
或文本这样其他软件都可以读取的文件。创建一个如 html、rtf、或 xml 这样其他软件业可
以读的文件。用其他软件的格式创建数据。
 不论操作环境是什么,几乎都可以创建分隔文件(delimited files)
,且大部分软件
都是可以读取的。数据步,可以让你很好的控制文件的格式,但是步骤比较多。
导出向导(Export Wizard)和导出过程(EXPORT procedure)
,很好使用,但对结
果的控制不是很好。ODS 可以从任何输出中创建逗号分隔的文件(CSV)

 使用 ODS,可以从任何输出中创建 HTML、RTF、和 XML 文件,大部分软件都是可
以读取这些文件的。
 如果 PC 文件格式软件中有 SAS/ACCESS 模块,可以创建一些不同的文件类型,这些
文件在 PC 程序中很常见。
出向导
(Export Wizard)
和导出过程
(EXPORT procedure)
都可以产生 PC 文件。通过使用这些程序本身来创建,避免了创建完还要导入。
如果没有 SAS/ACCESS 模块,且使用 window 系统,那么可以使用 Dynamic Data
Exchange(DDE)或 Open Database Connectivity(ODBC)来讲数据从 SAS 移动到 PC 程
序中,且不需要创建中介的文件。

导出 SAS 数据集到其他的操作系统中 有三个有效的方法:交叉环境数据访问
(CEDA)
,XPORT 引擎或 CPORT 过程,XML 引擎,以及 SAS/CONNECT 模块。
 CEDA 是迄今为止最简单的,将 SAS 数据集移动到其他操作系统的方法。但 CEDA
不能被 SAS version 6 使用,也不能在 OS/390 或 z/OS 中使用。
 XPORT 引擎和 CPORT 过程都创建了可以移动到

其他操作系统的传送文件,
再将

其转回成 SAS 数据集。创建传送文件会导致数据精度的损失。但对于 SAS version
和 OS/390 或 z/OS,由于不能使用 CEDA,故可能需要这个方法。
 如果使用的是 SAS 9.0 或更高版本,那么你可以在 LIBNAME 语句中使用 XML 引擎,
来创建 XML 文件。这个文件可以转移到其他电脑中,并且可以使用 XML 引擎来
转回到 SAS 数据集。
 SAS/CONNECT 模块,连同一些其他的功能,可以让你将 SAS 数据集转移到其他操
作系统中,而不需要创建中间文件。SAS/CONNECT 模块也可以讲 SAS 数据集从一
个较早版本移到一个较高版本,且反之也可以。

9.2 用导出向导写文件
导出向导是一个图形使用界面(GUI)
,如果你只需要一次性导出数据,那么这个方法
比 proc export 简单。
在文件菜单中选择“导出数据…”
,在第一个窗口中,选择要导出的 library 和 menber

154

名。如果要导出一个临时 SAS 数据集,那么 library 就是 work。Member 就是 SAS 数据
集的名字。

第二个窗口中,选择要创建的文件类型。这可以从 standard data sources 的下拉列表
中选择,或勾选 User-defined formats 旁边的框框。

下一个窗口中 ,选择导出文件的路径。如果要导出分割的文件,那么要在 option 中
进行设置。

155

最后一个窗口中,用来储存有导出向导产生的 proc export 语句:

9.3 用 EXPORT Procedure 写分割的文件

156

使用 EXPORT Procedure 的优点于,它可以将代码融合到现有的 SAS 程序中,每一次创建文
件时,不需要通过 export Wizard。

The EXPORT procedure 基本形式为:
PROC EXPORT DATA=data-set OUTFILE='filename';
Data-set 是要导出的数据集,filename 是路径及名称,如下的代码告诉 SAS 读取名为 HOTELS
的临时 SAS 数据集,
并写入名为 HOTELs.csv 的逗号分隔的文件中,
路径为 C 盘下的 MyRawData
文件夹:
PROC EXPORT DATA=hotels OUTFILE='c:\MyRawData\Hotels.csv';
SAS 根据文件的扩展名,来决定创建哪一种文件。也可以通过在 PROC EXPORT 语句中增加
DBMS=option 来指定文件类型。下面的表格显示了扩展名和对应的 DBMS 辨认器的辨认:

注意空格分割的文件,是没有扩展名的。因此必须使用 DBMS=option。下面的代码通过
DBMS=option,告诉 SAS 创建一个空格分割的文件,名为 Hotels.spc,替代选项告诉 SAS 替代
同名文件。
PROC EXPORT DATA=hotels OUTFILE='c:\MyRawData\Hotels.spc'
DBMS=DLM REPLACE;
如果想创建一个有分隔符的文件,不是逗号、tab 或者空格分隔的,就需要 DELIMITER 语句。
DELIMITER 语句不在乎使用什么扩展名,也不在乎指定的哪种 DBMS identifier,文件将会使
用你在 identifier 中指定的分隔符。比如,下面的代码产生文件,Hotels.txt,用&作为分隔符:
PROC EXPORT DATA=hotels OUTFILE='c:\MyRawData\Hotels.txt'
DBMS=DLM REPLACE;
DELIMITER='&';
例子 有一份关于高尔夫课程的数据,变量为课程名、洞口数、par、yardage 和 greens fees.

下面的代码使用 infile 和 input 语句读取数据并放入名为 GOLF 的永久 SAS 数据集中,存于 C
盘的 MySASLib 路径下。这个例子使用 LIBNAME 告诉 SAS 永久数据集储存在哪里,但也可是
使用直接指代:

157

下面的代码写一个纯文本、tab-delimited 文件,可以用任何文本编辑器来读取:

由于输出文件以 txt 结尾,且没有 DELIMITER 语句,SAS 将写入一个 tab-delimited 文件,如
果运行这段代码,日志将出现如下:

注意原始数据中只有六个观测值,多出的一行是变量名。如果用文字编辑器读取这个文件,
那么将出现如下:

如果想要改变格式,运行 proc export 之前,在数据步中使用 FORMAT 语句。

9.4 用 EXPORT Procedure 写 PC 文件
如果使用的是 windows 或 unix 系统,且有 SAS/ACCESS 的 PC 文件格式软件,那么就可以使
用 EXPORT procedure 来创建 PC 文件类型。如果用的是 Windows 系统,EXPORT procedure 可
以创建 Microsoft Access,Microsoft Excel,dBase,和 Lotus files。Unix 系统则可以用 SAS9.1 或更
高版本创建 dBase files,也可以创建 Microsoft Access 和 Microsoft Excel files。

Microsoft Excel,Lotus and dBase files PROC EXPORT 创建 Microsoft Excel,Lotus 和 dBase 的
基本形式为:
PROC EXPORT DATA=data-set OUTFILE='filename';
Data-set 是导出的数据集, filename 是输出文件的路径。
下面的语句告诉 SAS 读取名为 HOTELS
的临时 SAS 数据集,并写入名为 Hotels.xls 的 Microsoft Excel 文件:
PROC EXPORT DATA=hotels OUTFILE='c:\MyRawData\Hotels.xls';
SAS 通过扩展名来决定创建哪一种文件。可以通过 DBMS=option 来指定文件类型。下面的表
显示了文件扩展名和 DBMS 标识符。

下面的语句包括 DBMS=option,告诉 SAS 创建一个名为 hotels.xls 的 Microsoft Excel 5 文件,
REPLACE 选项意味着替换同名文件。
PROC EXPORT DATA=hotels OUTFILE='c:\MyRawData\Hotels.xls'

158

DBMS=EXCEL5 REPLACE;
默认情况下,Microsoft Excel sheet 的名字与 SAS 数据集一样,通过 SHEET=语句可以指
定不同的名字(该语句对 Microsoft Excel 4 or Microsoft Excel 5 无效)
。Sheet 名中特殊的字符
将转化为下划线,
且$不允许放在 sheet 名字的后面。
下面的代码创建了一个名为 Golf_Hotels
的工作薄:SHEET='Golf Hotels';

Microsoft Access files 创建 Microsoft Access 文件使用 OUTTABLE=option,而不是
OUTFILE=option,并且要增加 DATABASE=语句。基本形式为:
PROC EXPORT DATA=data-set OUTTABLE='filename'DBMS=identifier;
DATABASE='filename';
DATABASE 语句指定了哪一个 Microsoft Access database 文件希望修改或创建,
OUTTABLE 选项指定那个 database 的表名。必须要指定 DBMS 选项来创建 Microsoft Access table,下表显示了 DBMS 的标识符:

例子 仍然是高尔夫课程的数据:

下面的代码使用 INFILE 和 INPUT 语句读取数据,并将其放入名为 GOLF 的永久数据集
中:

如下代码将 golfSAS 数据集写入 Microsoft Excel 文件:

Excel 的结果为如下图所示:

159

9.5 用数据步写原始文件

数据步可以创建原始文件,在数据步中使用 file 语句和 put 语句,可以写下任何一种
形式的原始数据文件。虽然 PROC EXPORT 和 Export Wizard 在某种程度上更简单,但选项有
限。而数据步可以更灵活的创建。
可以用读取原始数据的同样方式写入原始数据,只需几步改变——用 file 语句和 put
语句。也就是说 infile 和 input 语句是将原始数据文件导入 SAS,而 file 和 put 语句是将原始
数据导出。

与 input 一样,put 语句可以用 list,column 或 formatted 风格。但由于 SAS 已经知道变
量是否是数值或字符串,因此不需要在字符串变量后加$符号。如果使用 list format 风格,
SAS 会自动在变量之间加空格,创建一个空格分隔的文件。要用其他分隔符,在 file 语句中
使用 list-style put 语句和 DSD 和 DLM=options:
FILE ’file-specification’ DSD DLM=’delimiter’;
如果使用 column 或 formatted 风格的 put 语句,SAS 将会把变量放在任何你指定的地
方。可以用 input 语句中同样的指示器,用@n 移动到第 n 列,用+n 移动 n 列,用/移动到下
一行,用#n 滑动到第 n 行,@则停留在当前行,也可以通过引号来加入字符串。

例子 仍然是高尔夫球课程的数据,

下面的代码是读取数据的:

现在要将数据写入原始原件,但只有三个变量,按新的变量顺序排列,并且美元符号
放入变量 GreenFees 后面。下面的代码读取数据并用 FILE 和 PUT 语句写入原始文件:

160

_NULL_是告诉 SAS 不要新建数据集,以节省电脑资源。
SET 语句告诉 SAS 读取永久数据集 GOLF, 语句告诉 SAS 要创建的输出变量的名字,
FILE
PUT 语句告诉 SAS 写入的内容和路径。Put 语句包含了两个引用的字符串,
“Golf Course”和
“Par”,这两个将插入原始文件中。Put 语句使用@列指示符告诉 SAS 变量的变量值放置在哪
里。为 GreenFees 变量赋 DOLLAR7.2 格式。用 put 语句可以完全控制原始文件。
运行这段代码,日志窗口将出现下面的信息:

输出结果为:

9.6 用 ODS 写分隔和 HTML 文件
ODS 是创造各种输出格式的强有力的工具。在各种输出格式中,ODS 可以创建的有两
种,CSV 和 HTML,使用它来将数据从 SAS 中传送到其他程序中,是很有用的方法。许多程
序可以读取 CSV 或 HTML 格式,而且任何操作系统都可以使用这种方法。
由于所有的过程其输出都经过 ODS,
因此可以通过选择正确的目的地来用 ODS 导出数
据,并用 proc print 来获取数据列表。如果不想让 SAS 打印缺失数据,可以使用 MISSING=''
系统选项。默认下,PROC PRINT 打印观测序号,可以通过使用 NOOBS 让其不打印。

CSV files 从 9.0 开始,可以用 ODS 创建 CSV 文件。CSV 文件用逗号将变量值分开,
且变量值被括在双引号之内。双引号允许变量值包含逗号。创建一个 CSV 文件来转载数据,
用下面的语句:
ODS CSV FILE='filename.csv';
Your PROC PRINT statements go here
RUN;
ODS CSV CLOSE; filename.csv 是要创建的 CSV 文件,
并且下面要为你的数据插入正确的 proc print 语句。
如果想要在 CSV 文件中包含标题和注脚,使用 csvall,而不是 csv。
HTML files 使用下面语句为你的数据产生 HTML 文件,可以在 ODS HTML 语句中增加
STYLE=option 语句来选择不同的风格。或者,如果不想使用任何风格,则使用 CHTML 输出
目的地来代替 HTML。
ODS HTML FILE='filename.html';
Your PROC PRINT statements go here
RUN;
ODS HTML CLOSE;
例子 此例使用 SAS 永久数据集 GOLF,仅包括在 hawaii 的 gofl 课程。下面的代码使
用 ODS 来创建 CSV 文件,golfinfo.csv:

161

CSV 文件如果用记事本打开,如下所示:

如果使用 excel 打开,则如下所示:

下面的代码从 golf 数据创建一个 HTML 文件,golfinfo.html,并且在 proc print 语句中
使用 noobs 选项来减少观测之列:

用 excel 打开:

162

9.7 和其他类型电脑分享 SAS 数据集

访问 SAS 数据集时候,SAS 会自动检测数据以决定是否和与你使用的操作系统兼容。
如果数据集处于不同的系统之中,SAS 会自动使用交叉环境数据访问(CEDA)
,以动态传送
数据至一种形式,这种形式下,SAS 可以在你的系统中理解数据。有两种 CEDA 不能使用的
情况,分别为:OS/390 或 z/OS,和 SAS 6.0 及以前的版本。
决定数据表现 CEDA 是透明的,以至于你不知道什么时候它在被使用。如果想知道什
么时候 CEDA 被使用,可以用下面的语句:OPTIONS MSGLEVEL=I;
则,无论什么时候 SAS 使用 CEDA 访问数据,日志窗口都会出现下面的类似信息:

为外部主机创建 SAS 数据集 创立一个 SAS 数据集,方便其他电脑系统访问,而又不
需要浪费电脑资源转换格式,可以在 libname 语句中使用 OUTREP=option,基本形式:
LIBNAME libref'path'OUTREP=data-representation;
如果想要那个库中所有数据集都有指定 host representation,还可以: data-set-name(OUTREP=data-representation) data-representation 基本来说是操作系统的名字,比如想要 data representation 是
Microsoft Windows 64-Bit Edition,
那么就应该为 WINDOWS_64;
如果想要 data representation
是 Solaris 32-Bit Edition,那么应该为 SOLARIS_32。

例子 你有关于 HAWII 高尔夫球课程的数据,储存在你的电脑里。可是你的朋友需要
你的数据,而他的电脑是 linux 系统,现在需要把数据集转换成 linux 格式。下面的代码在数
据步中使用 SET 语句读取 sport 逻辑库中的 golf 数据,Data 语句中的 OUTREP=data set 选项
告诉 SAS 用 linux 格式写下数据,并创建名为 golflinux 的数据集。

系统选项 MSGLEVEL=I 导致了下面的信息:

移动 SAS 数据集 如果两台电脑都访问同一个文件系统,
那么用 LIBNAME 语句指向
SAS 数据集存放的路径就可以了,否则要用 binary 模式的 FTP,或者使用外部媒介,比如软
盘或 CD。

163

FAT 文件系统 从 SAS 版本 7 开始,创建的数据集默认扩展名为.sas7bdat。有的使用
FAT 文件系统的 windows 系统只能有三个字符的扩展名,此时 SAS 数据集的扩展名为.sd7。
如果接受三个字符的扩展名,创建一个三个字符扩展名的数据集,则需要再 libname 语句中
使用 SHORTFILEEXT 选项:
LIBNNAME libref'path' SHORTFILEEXT;
如果你不能使用 CEDA

164

Similar Documents

Free Essay

The Little Sas Book

...The Little SAS Book a T H I ® p R D r E i D I m T I e O r N Lora D. Delwiche and Susan J. Slaughter The correct bibliographic citation for this manual is as follows: Delwiche, Lora D. and Slaughter, Susan J., 2003. The Little SASâ Book: A Primer, Third Edition. Cary, NC: SAS Institute Inc. The Little SASâ Book: A Primer, Third Edition Copyright © 2003, SAS Institute Inc., Cary, NC, USA ISBN 1-59047-333-7 All rights reserved. Produced in the United States of America. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the prior written permission of the publisher, SAS Institute Inc. U.S. Government Restricted Rights Notice: Use, duplication, or disclosure of this software and related documentation by the U.S. government is subject to the Agreement with SAS Institute and the restrictions set forth in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987). SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513. 1st printing, November 2003 SAS Publishing provides a complete selection of books and electronic products to help customers use SAS software to its fullest potential. For more information about our e-books, e-learning products, CDs, and hardcopy books, visit the SAS Publishing Web site at support.sas.com/pubs or call 1-800-727-3228. SAS and all other SAS Institute Inc. product or service...

Words: 70608 - Pages: 283

Free Essay

Little Sas Book Prime

...PCSX2 1.2.0 Readme Overview PCSX2 is a PlayStation 2 emulator for Windows and Linux, started by the same team that brought you PCSX (a Sony PlayStation 1 emulator). The PCSX2 project attempts to allow PS2 code to be executed on your computer, thus meaning you can put a PS2 DVD or CD into your computers drive, and boot it up! The project has been running for nearly 10 years now, and since its initial release has grown in compatibility. From initially just being able to run a few public domain demos, its current state enables many games to boot and actually go in game, such as the 'famous' Final Fantasy X, Devil May Cry 3 and God of War. You can always visit the PCSX2 homepage to check the latest compatibility status of games with more than 2000 titles tested. Following our new release scheme as described here, v1.2.0 is an official, stable release. What's new in 1.2.0? Windows Core: • microVU fixes for Dreamworks games, later Tony Hawks games, Evil Dead and others. • Fixes to New GIF unit to solve regressions • microVU bugs fixed (affecting Extreme-G Racing and others) • CDVD fixes (Impossible Mission now boots) • Path 3 arbitration and timing refinements • MFIFO fixes for DDR games • Huge DMAC bug fix solving most of the problematic videos. (Baldurs Gate 2, Katamari Damacy and more) • Memorycard support improved in many games, now supports PSX memorycards also • Multitap support improved greatly • Many...

Words: 1524 - Pages: 7

Premium Essay

Paper

...Conceptualizing a Business Isabel Lopez Larry Shipley BUS/475 August 25, 2011 Coffee House, Business Mission SA Novel Beans is an exclusive bookstore plus coffee house mixture opening in the downtown area of San Antonio, Texas. SA Novel can be located on a fine trafficked street straight in main tourist area of San Antonio. The café is surrounded by the Market downtown. The society is complete with shops, restraints, bars, and companies that are geared in the direction of the ample university students and tourist that walk freely in this area. University of Texas at San Antonio, San Antonio College, and not to mention the University health science center and a mixture of all around the world tourist make up a wonderful combination of consumers for SA Novel Beans. A large mass of these students rely on bicycles, mopeds or walking to obtain to classes and their employment, and most of them go across the downtown shopping areas on an every day or weekly basis. Tourists most often walk to be able to look at the beauty that San Antonio has to offer. SA Novel Beans offer an additional reason like a bookstore to attract the students’ population. “Most of the Coffee shops in the area are either chain locations such as Starbucks, or they are very alternative locations that border on hippy in nature, which might not be conductive to every consumer’s taste” (Evonson,2007). The SA Novel Beans is a very comfortable, clean, and good environment to enjoy snack as well as literature. It has...

Words: 1249 - Pages: 5

Premium Essay

Tattoo Thesis by Minnehaha

...TATTOO MANIA! (An A-Z of Flash Tattoos) A proposed book illustration and its promotion A Thesis presented to the College of Fine Arts and Design UNIVERSITY OF SANTO TOMAS In Partial Fulfillment of the Requirement for the Degree of Bachelor of Fine Arts Major in Advertising By Ma. Minerva Minnehaha V. Capco INTRODUCTION Although our country still remains conservative as compared to the West, the prevalence of Skin Art here in the Philippines is still unstoppable. Filipinos of the latest generations have gradually started opening up to embrace a whole new subculture---a subculture that is more experimental with art, music and sports. Crews and crews of Graffiti artists as well as Skaters are flourishing, Local bands are reaching new heights, and of course, the Industry of Tattooing is growing by the minute. The word tattoo was said to have two major derivations. From the Polynesian word “Ta” which means “to strike something” and from the Tahitian word “Tatau” which means “to mark something”. Archaeologists across the globe have unearthed preserved corpses and mummies that are tattooed. These mummies are said to have lived thousands of years ago, and most of the bodies bore tattoos that signify their cultures, ranks and beliefs. According to research, tattooing has been in activity to many countries such as Japan, Egypt, China, Polynesia, New Zealand, Indonesia, India, Thailand, Africa, Ancient Greece and Rome, America...

Words: 7551 - Pages: 31

Premium Essay

I Belong to God's Family

...those things we choose to have this theme for the whole year! I BELONG! We hope and pray that all of us will be part of this wonderful event and by God's grace everyone who will come here and visit our church will not just be a visitor but they will be part of the family, not just a part but be a member of the family, because they feel that they belong. Read Verse: Romans 12:3-8 What is your opinion about this... "There is something wrong when people are leaving the church to find God" May problema ang isang church if most of the people here eh ang gawain is to come and go. They will attend once, twice or for a month but later on they will decide to leave. Bakit kaya ito nangyayari sa ating mga iglesya, and we cannot deny the fact the it is also happening here in our church. Sa Panahon natin ngayon one of the things na nararamdaman natin eh yung feeling of belongingness... we want...

Words: 3906 - Pages: 16

Premium Essay

Press Release

...Memorandum To: Head of Financial and Internal Control From: Group Learning Team A Date: 10/13/2014 Re: Challenges Communicating Accounting Changes The issuance of SAS No. 112 in 2006 and SAS No. 115 in 2009 by the AICPA created the need to communicate significant audit procedure changes to our clients, as well as to our own firm accountants. SAS No. 115 supersedes SAS No. 112. Due to SAS No. 115, significant changes need to take place in order to comply with the new accounting principles. Specifically, internal company controls have become a major focus of the standard audit procedures. Each of the three groups experienced certain challenges regarding the requirements of the new directive. Specifically: 1- Firm Accountants - The new audit requirements has compelled our audit staff to redesign our traditional procedures on issues outside the financial statements. Our staff maintains a high competency regarding the financial statements themselves, but the requirement to review company financial controls and procedures has significantly changes and requires us to reinforce our staff training as many of the younger staff are confused. The younger staff has little experience with how companies run operationally, and they are now being required to judge the quality of these operations. A series of training regarding best practice financial controls is recommended to bolster the staff's ability to complete the audits per the new directive. 2- Clients - The new...

Words: 442 - Pages: 2

Free Essay

Jan Carlzon

...Harvard Business School 8-489-046 Rev. May 31, 2001 Jan Carlzon In June 1974, at the age of 32, I sat down behind the desk in the president’s office of Vingresor, a subsidiary of the Scandinavian Airlines System that assembles and sells vacation package tours. I’d been selected president after only six years of working life. I had authority over 1,400 employees, many of them roughly the same age as I. My qualifications were no better than anyone else’s, and there was no obvious reason for making me president. I was afraid—afraid that I wouldn’t be accepted and afraid that I would fail. I had taken over at Vingresor during troubled times. The 1973-1974 oil crisis had escalated air travel prices so much that passengers shied away from charter trips. It was our job to make Vingresor profitable again. We didn’t have many options. The main functions of a tour operator like Vingresor are to contract for flights and hotels and set up a service section at the travel resort that organizes excursions and activities. Then all these pieces are packaged together for the customer to purchase. The operator’s profit is to a great extent a question of cost: the more money invested throughout the various stages of assembling the package, the smaller the profit margin and the greater the chances of losing money. The less invested, the less the risk. In a sagging market, most product-oriented executives would have cut back on service. But this would only bring in less revenue, creating an...

Words: 15635 - Pages: 63

Free Essay

Maldives

...Introduction Country Background “The Maldive Islands, is an island nation in the Indian Ocean formed by a double chain of twenty-six atolls. It stands in the Laccadive Sea, about 700 kilometres (430 mi) south-west of Sri Lanka and 400 kilometres (250 mi) south-west of India. Being one of the world's poorest developing countries, it is threatened by global warming because of its very low elevation. The main natural resources are fisheries and a marine environment conducive to tourism. The other constraints it faces are small and widely dispersed island communities, limited skilled human resources, and rapid population growth. Maldives population of 313,920 (2010) inhabits 200 of its 1,192 islands. Maldives' capital and largest city Malé had a population of 103,693 in 2006. It is also one of the Administrative divisions of the Maldives. Traditionally it was the King's Island where the ancient Maldives Royal dynasties were enthroned.” (CountryStudies.us Library of Congress) http://countrystudies.us/maldives/6.htm Determinants of Culture Geography The Maldives lies in two rows of atolls in the Indian Ocean, just across the equator. The country is made up of 1,190 coral islands formed around 26 natural ring-like atolls, spread over 90,000 square kilometers. Ninety-nine percent of the Maldives is made up of sea. The people of the islands are widely dispersed across the atolls, with about 200 inhabited islands. About 90 islands are developed as tourist resort and the rest are...

Words: 1427 - Pages: 6

Free Essay

Assimilation or Humiliation

...Scott Perreault December 5, 2012 Assimilation or Humiliation In “The School Days of an Indian Girl” written by Zitkala Sa, we are thrust into the issues confronting the Native American population. White European culture was the controlling force in this era of misunderstanding and ethnocentricity. They felt threatened by a culture they did not understand, and so in response and a need to alleviate the pain of their insecurity, they required that the young Native American be assimilated into the ways of the White. The narrator who is immersed in this unreal reality is forced to submit, to resist is futile. The innocent girl from the reservation becomes a success story to the white man, but in doing so is alienated from family. The dreamlike excitement of the train journey to the school would soon become a nightmare of sorts for her and her companions. It took very little time to discover that this was not her land, and her habitation here only aroused suspicion and mistrust. Sa writes, “I had arrived in the land of rosy skies, but I was not happy, as I had thought I should be” (Zitkala Sa, 1140). It is evident here that although the landscape is quite appealing and pleasant to the senses, she realizes that beauty is skin deep, and what lies beneath is an affront to her. For her everything is foreign; no sense of familiarity to envelop her, but her spirit did stay intact. From time to time, her anger exuded the rebellious spirit within. “With fire in my heart, I took the...

Words: 1385 - Pages: 6

Premium Essay

Gay Morphology

...The morphology and semantics of Filipino Language spoken by the youth today lingo in Angono, Binangonan, Taytay and Cainta. Related Literature     The number of homosexuals in the Philippines continuous to grow and they are in the mainstream of about almost everything. Gays are creative and talented. Even the language that they are using cannot be simply overlooked at. Using their creativity and wit, they were able to make the language much more colorful and meaningful. Now a days, gay lingo is no longer exclusive to homosexuals but slowly accepted by the Philippine Community. Yes, it has been accepted in the past recent years. In the talk show ‘Katok mga Misis!’ of Giovanni Calvo and Ali Sotto. On their segment ‘word of the day’ they feature a gay word which became a household word in the Eighties. The coining of the word ‘badaf’ which means babae dafat and ma at pa for the contracted malay ko at pakialam ko (Ladlad 2, pp.42, 23). Another example of variety show which showcase our openness for the Homosexual is ‘It’s ShowTime’ in ABS-CBN, with one of the hosts, Vice Ganda. (https://ph.news.yahoo.com/vice-ganda-slang-dictionary-083641238.html) There is his invention of distinct and initially perplexing words to add to the "gay lingo." These have eventually been picked up not only by other stars themselves but also by normal Netizens and rabid showbiz fans in their daily conversations. Sample words are: “Shunga" While it has been a term that's already been widely used long...

Words: 2383 - Pages: 10

Premium Essay

The Fraud Triangle

...The Fraud Triangle Abstract In 2002 SAS No. 99, Consideration of Fraud in a Financial Statement Audit describes the difference between material misstatements due to errors and intentional fraud and defines two types of intentional fraud: fraudulent financial reporting and misappropriation of assets. SAS No. 99 also introduced D. R. Cressey’s theory of the fraud triangle which is so named because it consists of three conditions that are generally present when fraud occurs: incentive/pressure, opportunity, and attitude/rationalization. Introduction This paper reflects on SAS No. 99 to describe the difference between material misstatements due to errors and intentional fraud which includes fraudulent financial reporting and misappropriation of assets. It also describes the fraud triangle theory proposed by D. R. Cressey. Think back to when you were in elementary school during fire safety week when the fire department would come and visit. Do you recall the fireman explaining what can be referred to as the fire triangle? That is, the description of what is necessary for fire to exist and continue. In order to create fire you need three things: fuel, oxygen, and heat. To put out (or prevent) the fire you would need to remove one of those three sides to the triangle. You could stop the fire by removing either the fuel, oxygen, or heat. This is a simple analogy for the fraud triangle. Just as there are three sides to the fire triangle there are three sides to...

Words: 2106 - Pages: 9

Free Essay

Mgt 415 Best Workplace

...represents an intangible asset that may significantly influence future firm performance. In 2014, three of those companies consisted of Google, SAS, and the Boston Consulting Group. These three companies find motivational ways to boost employee motivation and foster group cohesiveness. Google holds the number one spot for best workplace and for good reason. Google currently employs over 42,000 employees (Fortune 100 Best Companies to Work For, 2014). Google gives employees plenty of options when it comes to choosing a team from engineering design to sales operations. Whether building products, growing businesses or helping to keep Google going, we do cool stuff that matters (Google Teams and Roles, 2014). According to Lush (2012), the group is cohesive because members like and are attracted to one another. Some major sources include member similarity and member attractiveness. The more choices an employee has about where they are placed in a company the more motivated they become. When employees are motivated it will help foster group cohesiveness. The second spot for best workplace has been granted to SAS. SAS employs a little over 6,500 employees with a growth rate of 3.6%. We believe in stimulating work, an empowering management philosophy where you are encouraged to take risks and an inspiring work place where creativity thrives ( SAS Careers, 2014). Employees of the software developer use the services of its onsite health center, which is also open to family members. The...

Words: 816 - Pages: 4

Premium Essay

Greenwashing

...Greenwashing According to Paetzold,(2010) greenwashing can be described as when you are trying to convince people that you are doing something good for the environment by being involved in small environmentally friendly initiatives, which in some cases can be used to hide environmental damage you may be causing. In this essay I will extend on greenwashing, supporting the definition. I will explain the reason a company may commit greenwashing, using a lot of TerraChoices’ ideas about greenwashing for support. I will also analyse the different forms (the sins) of greenwashing, supporting these ideas with examples of some of these sins being committed by various companies. Concluding the main body of my essay I will include some various ways greenwashing is attempting to be addressed, in particular by the federal trade commission with the green guide. According to TerraChoice (2010) there was a growth of 79% between 2008 and 2009 green products. With green marketing increasing, greenwashing is also increasing. Lane (2013, p.168) states greenwashing can be described as making false or misleading claims regarding purportedly friendly products, services or practices. As a result to the increase in knowledge of climate change and a range of other environmental issues consumers demand that products are more environmentally friendly and are sustainable. This has led to the increase of businesses to engage in greenwashing, or falsely advertising their products. The reason that greenwashing...

Words: 1877 - Pages: 8

Free Essay

Cleopatra

...Olivia Blankenship Dr. Lawrence Introduction to Humanities 7 July 2014 Cleopatra Hardly any personalities from the Hellenistic period (323 BC – 31 BC) are as renowned as Cleopatra VII (69 BC – 30 BC), the Egyptian queen. The focus of a wide array of Western historical texts, music, poems, literature, and arts, Cleopatra has been widely portrayed as a Queen who ruled her subjects and her Roman lovers through sex and gender. Despite such portrayals, very little is known about Cleopatra and there are doubts among historians that such accounts are an inaccurate depiction of Cleopatra. This paper will research studies on Cleopatra to determine whether the accounts of her ruling through sexual liaisons are accurate or they are propaganda developed to tarnish her impeccable reputation. The argument among scholars is that most of the accounts that currently depict Cleopatra VII as a Queen who used sex and gender to rule are erroneous. Roller argues that those accounts are the consequence of a perverse male-dominated historiography out to depict her as an extension of men in her life (2). According to Roller, modern and ancient male-dominated historiographies betray their chauvinistic attitudes towards Cleopatra in the manner in which they portray her primary accomplishments as the destruction of her male lovers (2). Such portrayals were necessary because of their effectiveness in discrediting Cleopatra’s achievements. Roller and Salisbury’s studies...

Words: 1815 - Pages: 8

Free Essay

Phil Literature

...PHILIPPINE LITERATURE Philippine literature is the body of works, both oral and written, that Filipinos, whether native, naturalized, or foreign born, have created about the experience of people living in or relating to Philippine society. It is composed or written in any of the Philippine languages, in Spanish and in English, and in Chinese as well. Philippine literature may be produced in the capital city of Manila and in the different urban centers and rural outposts, even in foreign lands where descendants of Filipino migrants use English or any of the languages of the Philippines to create works that tell about their lives and aspirations. The forms used by Filipino authors may be indigenous or borrowed from other cultures, and these may range from popular pieces addressed to mass audiences to highly sophisticated works intended for the intellectual elite. Having gone through two colonial regimes, the Philippines has manifested the cultural influences of the Spanish and American colonial powers in its literary production. Works may be grouped according to the dominant tradition or traditions operative in them. The first grouping belongs to the ethnic tradition, which comprises oral lore identifiably precolonial in provenance and works that circulate within contemporary communities of tribal Filipinos, or among lowland Filipinos that have maintained their links with the culture of their non-Islamic or non-Christian ancestors. The second grouping consists of works that show...

Words: 17320 - Pages: 70