§
每一种结构化语言编写的程序都由顺序、分支、循环三种结构构成,
SAS语言也不例外。在这里简要介绍一下分支和循环语句的语法。这些语句均可直接在数据步和程序步中使用,适当地使用它们可以大大简化我们的工作。
3.4.1 分支(条件)语句
【语法格式】
语法格式如下:
| IF 条件 THEN |
| 程序块; |
|
ELSE
|
| 程序块; |
可见其语法和
【应用实例】
FOXBASE语言十分相似,只是前面多了THEN,结尾没有ENDIF,可以将两者相比较来理解。其中程序块如果只有一句,则可直接写出,否则应以DO开头,以END结束。
例
解:程序如下:
3.1 在产生数据集temp的同时为其增加变量class,当x>50时class=1,否则class=2。
|
data temp;
|
数据步开始,定义要建立的数据集为WORK库的TEMP |
|
input x y@@;
|
要输入的变量为X和Y,并且采用数据连续读入方式 |
|
if x>50 then class=1;
|
建立新变量CLASS,如果X>50,则CLASS=1 |
|
else class=2;
|
否则,CLASS=2 |
|
cards;
|
数据块开始 |
|
34 56 78 90 35 67 89 10 23 65 77 45
|
数据块 |
|
;
|
数据块结束 |
| proc print; |
列表输出数据集中的数据,检查有无错误 |
| run; |
程序结束,开始运行以上程序 |
以上程序在书写时采用了缩进格式,使程序的结构更清楚。当然大家可以左对齐写完所有的语句,但这样书写的程序在较长时难以阅读。
为什么可以这样写?在这里有必要解释一下数据步的执行过程,input语句按变量顺序将数据读入内存缓冲区,直至每一个变量都有值相对应。然后数据步继续向下执行,从而其它语句可以修改内存缓冲区,如修改值、增加变量等,在执行到数据步结束后,程序又回到input语句处继续执行,直到数据读完为止。现在再看看这个程序,大家可以理解它了吧!
3.4.2 循环语句
【语法格式】
语法格式如下:
| DO 起始条件 TO 终止条件; |
| 程序块; |
| END; |
该语句主要用于建立数据集。
【应用实例】
例
解:程序如下:
3.2 在产生数据集temp的同时为其增加变量class,取值依次为1、2。
| Data temp; |
数据步开始,定义要建立的数据集为WORK库的TEMP |
| do class = 1 to 2; |
循环开始,循环控制变量为CLASS,取值从1到2 |
| input x y@@; |
要输入的变量为X和Y,并且采用数据连续读入方式 |
| output; |
用OUTPUT语句将循环控制变量写入数据集中 |
| end; |
循环结束 |
| cards; |
数据块开始 |
|
34 56 78 90 35 67 89 10 23 65 77 45
|
数据块 |
| ; |
数据块结束 |
| run; |
程序结束,开始运行以上程序 |
注意在数据步中,我们不需要用语句改变循环变量的大小,系统会自动改变。
现在,
SAS语言的基本知识算是介绍完了。在理论上,你现在可以坐在计算机前,独立编写程序以做出你的统计作业或者是向SAS公司发射核导弹。但为了使你能尽可能地少走弯路(我指的是做统计作业而不是后者),在以后的各章中我们将重点介绍一些常用的程序步,并且在必要的时候介绍一些较为深入的内容。3.4 结构化语句简介
SAS语言中常用的逻辑表达符号有and(和)、or(或)、xor(异或)、ne(不等)等。
x和y两个变量,则将VAR语句改为如下形式即可:
- 读入由语句指定的数据列。
- 为相应的数据域定义变量名。
- 确定变量的读入模式。
DATA语句开始,用于创建和处理数据集。其中最常用的语句有:
WORK,它在每次启动SAS系统后自动生成,关闭SAS时库中的数据集被自动删除;永久库可有多个,用户可以使用Libname语句指定永久库的库标记,永久库中的所有文件都将被保留。但库标记仍是临时的,每次启动SAS系统后都要重新指定。不过为了方便用户,SAS在每次启动时都会自动指定两个库标记:
现在,让我们将
好的,计算机语言就是我们和计算机对话时所用的语言。和以上人类对话的例子相对照,“我有这样一些数据”对应
上一篇:SAS/ASSIST视窗简介 下一篇:统计图
共5页: 上一页 [1] [2] [3] [4] 5 下一页