SAS学习笔记——三种逻辑结构、数组及数组的简单应用
SAS基本要素
SAS数据集(两种):SAS数据文件,SAS视图。一个逻辑库下可见数据集文件和视图文件。
SAS语法规则(两种):SAS名语法规则、SAS语句语法规则。
三种逻辑结构
1. 顺序结构(即一般的结构)
2.选择结构(if-else语句)
3.循环结构(do语句,do-while语句,do-utile语句)
循环结构
1. do语句循环:do-end语句的衍生,可以指定起始值和终止值;
2. do-while语句循环:先判断是否满足条件,满足则执行循环,不满足则跳出循环;
3. do-utile语句循环:先执行一次循环,再判断,满足则跳出循环,不满足则继续执行循环;
SAS数组
若是想对多个变量执行相同的操作,使用数组批量执行这些操作,可以大幅提高效率。
1.定义数组的一般式:arry 数组名 [小标 ] <$> <数组元素 > <(数组元素初始值)>
说明:“下标”指的是数组元素个数。“数组元素”列出来的可以是已有变量也可以是新变量;新变量需要指定初始值,不然默认为缺失值;如果新变量是字符型,需要在前面加上$符合,即: array[数组元素个数] $ 数组元素 (数组元素初始值)。
示例:arry sbp[7] sbp1-sbp7; *数组中下标可以是一个数。
array dbp[1:7] dbp1-dbp7; *数组中下标也可以是一个范围。
array dbp[ *] dbp1-dbp7; *数组中下标也可以不写,SAS自动根据变量个数判断下标值。
array dbp[ 7] ; *数组中“数组元素”可以不写。
带初始值:
arry sbp{1:7} sbp1-sbp7 (163 164 167 171 158 159 165);
arry dbp{1:7} dbp1-dbp7 (98 99 95 93 94 93 95); * “元素初始值”一定要用() 括起来,各个值之间用逗号或空格隔开。
二维数组:
array bp{2,1:7} sbp1-sbp7 dbp1-dbp7;
array bp(2,7) sbp1-sbp7 dbp1-dbp7(163 164 167 171 158 159 165
数组定义的注意事项:
(1)数组名不能与数据集中已有变量重名,也不要与已有函数同名;
(2)一个数组的变量类型必须相同,不能既有数值型,又有字符型。
(3)数组下标的写法可以用[ ]、()、{},依个人习惯而定。
array[数组元素个数], array(数组元素个数), array{数组元 素 个数}。
2.访问数组的一般形式:arrayname{i}. 例如:sbp{i}, sbp{2}。
3.数组函数 dim(): 返回数组所含元素个数。
例:array cha[ ] a b c;
dim(cha); *返回数组cha的元素个数,返回值为3.
4.常见自动变量
_n_ :表示观测或记录的序号。
_numeric_ :表示数据集中的所有数值型变量。
_character_ :表示数据集中的所有字符型变量。
_all_ :表示数据集中所有变量。
例: array cha[*] _character_ 。
6. 综合数组、数组函数及自动变量查找缺失值: