分享

SAS系列03:SAS入门(二)之SAS编程语言基础

 松哥精鼎统计 2020-10-23
导读

    SAS软件在数据管理上的功能非常强大,也提供了丰富的数据处理和分析方法来解决各种实际问题。Base SAS是SAS系统的核心,是运行SAS的必备模块,其主要功能是数据处理和数据管理,数据的统计描述以及生成报表(图2-1展示了SAS处理数据流程)。下面我们就开始SAS编程之旅。

SAS处理数据流程





图2-1  SAS处理数据流程图

(一)SAS逻辑库





    SAS逻辑库用于组织、查找和管理SAS文件,Windows系统下所有的SAS文件都是SAS逻辑库的一部分,这些SAS文件包括:SAS数据集、SAS目录、SAS程序等。SAS逻辑库分永久逻辑库和临时逻辑库。

    永久逻辑库指其包括的SAS文件在固定的存储介质上,并不意味着逻辑库本身是永久的,当SAS程序一旦关闭逻辑库就被删除了,但它包括的文件仍然在存储介质上。临时逻辑库(即WORK逻辑库)是存储当前SAS进程中的SAS文件,与永久逻辑库不同的是,只要SAS关闭,存储在临时逻辑库中的所有SAS文件都会被删除。一般情况下,重要的SAS文件存放在永久逻辑库,临时文件存放在临时逻辑库中。

1、创建永久逻辑库

    永久逻辑库可以通过两种方式建立:LIBNAME语句和手动创建。逻辑库命名应遵循以下规则:库名长度不超过8个字符,必须以英文字母或下划线开始,由数字、字母和下划线任意组合而成。


(1)LIBNAME语句逻辑库
程序1:将要分析的SAS数据集存放在“E:study fileJinDingtongjiSAS”文件夹,建立永久逻辑库。
LIBNAME xjf ‘E:study fileSAS’; /*建立逻辑库名为xjf的永久逻辑库*/

(2)手动创建永久逻辑库
    SAS启动后,在SAS资源管理中空白部分单击右键——点击新建后,弹出“新建逻辑库”对话框,依次在完成名称、引擎、路径选项后,点击确定,见图2-2。

图2-2  手动创建永久逻辑库

2、删除逻辑库

(1)LIBNAME语句删除永久逻辑库
  程序2:删除刚建立的永久逻辑库。
LIBNAME xjf clear; /*删除刚建立的永久逻辑库*/

(2)手动删除逻辑库
  在SAS资源管理器中选定要删除的永久逻辑,单击右键—选择删除—确定,见图2-3。

图2-3  手动删除永久逻辑库

(二)SAS数据集





1、数据集

    SAS数据集是SAS系统使用的数据文件,有两种表示形式:SAS数据文件(SAS Data File)和SAS视图(SAS View),两者在SAS中的图标是不一样的(如图4),数据文件是存储数据和描述信息,视图是运行查询语句后动态生成的数据,视图本身几乎不占存储空间的。

图2-4  数据文件与视图的图标

      数据文件和数据视图打开后类似于一张表格,包括数据部分和描述部分。数据部分可以看作由若干行和若干列组成,一行称为一个观测,一列称为一个变量,只要存储设备允许,SAS数据集中的观测个数和变量个数没有限制;描述部分有数据集的名称、创建日期和时间、观测数、变量数等。

    SAS数据集命名的长度不超过32个字符,必须以英文字母和下划线开始,可以由数字、字母和下划线任意组合而成。创建和使用SAS数据集时,通常根据数据集所在的逻辑库或要存储的逻辑库确定使用一级或二级名称。

    一级名称只包含数据集名称,通常应用于临时逻辑库(WORK库)中的数据集;二级名称由永久逻辑库名+数据集名称组成,通常应用于永久逻辑库中的数据集。SAS数据文件可能用DATA步来建立;视图用DATA步和RPOC SQL创建。

程序3:创建临时数据文件
*===由SASHelp中的数据集创建临时数据文件weight;DATA weight; /*创建临时数据文件其名称可以是一级名称weight,也可以写二级名称work.weight*/SET Sashelp.Bweight; /*临时数据文件的来源于SAS帮助中的数据集Bweight*/RUN;*===查看临时数据文件weight的描述信息;PROC CONTENT data=weight;RUN;


图2-5 数据文件的描述信息
*===查看临时数据文件的数据值;PROC PRINT data=weight;RUN;

图2-6  数据文件的数据值

程序4:创建永久数据文件。
*===创建永久性逻辑库xjf;LIBNAME xjf ‘E:study fileJinDingtongjiSAS’;*===创建永久数据文件xjf.weight;DATA xjf.weight;SET weight; /*永久数据文件xjf.weight来源于临时数据文件weight*/RUN;

程序5:创建SAS视图。
*===data步创建视图;DATA xjf.weight_view/view=xjf.weight_view;Set Sashelp.Bweight;RUN;*===PROC SQL创建视图;PROC SQL;CREATE view xjf.weight_view asSELECT *FROM Sashelp.Bweight;QUIT;

    视图生成后,也可以用PROC CONTENT和PROC PRINT程序分别查看视图描述信息和数据值。

    变量是数据集中非常重要的一个基本概念,变量有其属性,如名称、类型、长度、输入和输出格式、标签、位置和索引类型等,如图2-5。在SAS中,变量命名长度不超过32个字符,必须以字母或下划线开始,可以由数字、字母和下划线任意组合而成。

    SAS的变量类型只有数字和字符,数字型变量存储浮点数,包括日期和时间;字符型变量存储拉丁字母、阿拉后数字和其他特殊字符,默认是8个字符。关于SAS中变量的输入和输出格式,我们在后面的内容将详细讲解。

图2-7  数据文件的变量信息

2、SAS编程基础

(1)SAS程序
    SAS程序是由一系列SAS语句组成,SAS语句也有自己特定的结构和语法。一个SAS语句通常由SAS关键词(KEYWORD)、SAS名字(如数据集名字、变量名字
等)、特殊字符(如@、$等)和运算符(如+、-等)组成的字符串,以分号(;)结尾。最常见的的语句就是DATA语句和PROC语句。

    实际上,SAS的语句非常多,没有必要一一记住,但是我们一定要学会应用SAShelp。在DMS(还有EG和SAS Studio)的编辑器中,SAS会自动给关键词显示为蓝色;每一个DATA步或PROC步,SAS会自动用分割线分隔开,如图2-8(图中绿色为程序的注释行,深蓝色为语句的关键词,浅蓝色为选项的关键词)。

    SAS程序基本是以DATA语句和PROC语句开头,以RUN语句、QUIT语句、新的DATA语句或者PROC语句结束(见图2-8)。SAS程序可以是单独的DATA步和RPOC步,也可以用宏程序将一系列的DATA步和PROC步组合在一起。

图2-8  SAS程序示例
    
SAS程序中出现SAS名的种类很多,包括变量名、SAS数据集名、格式名、过程名、数组名、语句标号名等。SAS名字可以分为SAS系统定义名和自定义名(详见表2-1)。

表2-1  SAS名字种类
SAS名种类
名字
意义或规则
SAS系统定义名
WORK、SASHELP
库名
_NULL_  
不创建数据集
_DATA_
自动数据集名
_LAST_
最后一个活动数据集
_N_
观测号
_ERROR_
错误标识变量
_CHARACTER_
所有字符型变量
_NUMERIC_
所有数字型变量
_ALL_
所有变量
SYSDATAE
宏变量——日期
SYSVER
宏变量——SAS版本
自定义名
不能与系统定义名相冲突
名字长度各有不同(如库名8个字符,变量名可达32个字符)
必须是字母或下划线开始
可以由字母、阿拉伯数字或下划线任意组合而成。

(2)SAS语言
    SAS语言除了SAS语句,还有表达式、选项、格式、函数和Call例程。
    SAS表达式是由一系列运算符和运算对象形成一个指令集,被执行后产生一个目标值。其运算对象就是变量和常数;运算符包括特殊运算符号、函数和括号,执行比较、算术运算和逻辑运算命令。详见表2-2和表2-3。

表2-2  SAS表达式中的常数和变量

类型
举例
常量
数值常量
标准计数法:如-1,0,+1.3,022);
科学计数法:如0.5E-10,3E12;
十六进制计数法:0X100F

字符常量
由1-32767字符组成,必需放在单(或双)引号内。如果字符常量 中有单引号(双引号)时,可以用比引号(单引号),或者连续的单引号(双引号)

日期时间常量
日期(后缀D):’23FEB2020’D
时间(后缀T):’19:50’T
日期时间(后缀DT):’23FEB202020:12’DT
变量
数字变量
阿拉伯数字、日期时间等

字符变量
字母、特殊符号、数字等

表2-3  SAS运算符
类型
符号
意义
举例
比较运算符
=/EQ
等于
X=Y,X EQ Y

^=/—=/~=/NE
不等于
X^=Y,X NE Y

>/GT
大于
X>Y,X GT Y

</LT
小于
X<Y,X LT Y

>=/GE
大于等于
X>=Y,X GE Y

<=/LE
小于等于
X<=Y,X LE Y

IN
等于列表中的一个元素
X IN (1-14)
算术运算符
**
指数
X**2,X的二次方

*
X*Y,X乘以Y

/
X/N,X除以N

+
a+b,a加b

-
a-b,a减去b
逻辑运算符
&/AND
都为真时,运算结果为真
(X>Y & X>Z)

|/!/OR
任一为真时,运算结果为真
(X>Y & X<Z)

⌝/^/~/NOT
取反
NOT(X>Y)
其他运算符
><
取小
如果X=3,Y=5,A><B,其结果是X=3

<>
取大
如果X=3,Y=5,A<>B,其结果是Y=5

||
连接符
Type=XYZ,NUM=123,Type||NUM=XYZ123

    应用运算符进行运算时,其运算次序必须要遵循运算准则:括号内的表达式优先;较高优先级的运算选被执行,运算优先级别详见表2-4。

表2-4  SAS运算优先级别列表
优先级别
符号
意义
第一级
**
乘方

+
仅作为前缀时(取正)

-
仅作为前缀时(取负)

^
逻辑非

><
取小

<>
取大
第二级
*

/
第三级
+
仅作为中缀时(加号)

-
仅作为中缀时(减号)
第四级
||
如果字符|不能用,使用字符|或!连接
第五级
比较运算符
<=,=,^=,>,^>,^<
第六级
&
逻辑与
第七级
|
逻辑或
    SAS选项包括系统选项和数据集选项,其中系统选项可以影响整个SAS程序或SAS会话的交互的命令,数据集选项是应用于数据集的一些选项。SAS格式分为输入和输出格式,可告诉SAS按一定的格式读取和显示数据。

    SAS函数是一个子程序,它由0个或几个自变量返回一个结果值。SAS函数包括30类520个函数,可用于DATA步编程、WHERE表达式、宏语言语句、PROC REPORT和SQL。CALL例程应用CALL语句转变变量或执行其他系统函数,与函数相似,但是CALL例程不能用于赋值语种和表达式。SAS选项、格式、函数和CALL例程将在后期结合数据处理分析实例给大家详细介绍。

参考文献:
[1] 谷鸿秋. SAS编程演义[M]. 北京:清华大学出版社,2017.
[2] 高惠璇. SAS系统Base SAS软件使用手册[M]. 北京:中国统计出版社,1997.
[3] https://support./en/software/base-sas-support.html.
[4] 夏庄坤, 徐唯, 潘红莲, 等. 深入解析SAS——数据处理、分析优化与商业应用[M]. 北京: 机械工业出版社,2014.

---SAS系列教程持续更新中---

 
SAS系列教程02:SAS入门(一)
 
SAS系列1:统计分析航空母舰-SAS简介

精鼎特邀

点亮在看,后续更精彩!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多