在SAS中,数组的一般形式为:
array 数组名[下标] <$> <数组元素> <(元素初始值)>;
其中:
- array是定义数组的标志;
- 数组名的命名规则与SAS数据集名一样;
- 下标指定数组中包含的元素个数,这里的元素一般就是变量,可以使用“数组名[下标]”的方式引用变量;
- 数组元素主要是列出数组中包含的变量,可以是新变量,且若新建的变量是字符型,需要在前面加上$符号;
- 元素初始值指定新变量的值,默认为缺失值。
另外,数组定义的注意事项:
- 数组名不能与数据集中已有变量以及已有函数重名;
- 同一数组中的变量类型必须相同;
- 数组下标的写法可以用[],{},()中任意一种;
- 数组中的下标可以不写,而用*代替,SAS会自动根据变量个数来判断下标;
- 数组中的“数组元素”可以不写,如array y[3]等同于array y[3] y1 y2 y3;
- 元素初始值一定要用()括起来,各个值之间可以用逗号或空格隔开。
举例说明:
WX20200422-163637@2x.png
在上述代码的逻辑是这样的:用data
语句、set
语句以及制定的条件语句把符合条件的数据找出来,存放到data
语句指定的数据集中,set
后面的6行就是指定的条件。其中,if missing(cha[1]) then output;
这句话是输出缺失值的关键,翻译成白话就是:如果missing函数返回的值是1,那么就执行output这一语句(否则就不执行),output
语句的作用就是输出结果。输出的结果如下:
这里有一点需要注意,SAS是对每个变量分别执行查找缺失值并输出这一命令,所以若有的观测有多个变量存在缺失值,就会重复显示,可以使用上一节学到的去重方式进行去重。
最后的i变量是do循环时产生的,如果想把这个变量删除的话,在proc print;
之前加一句drop i;
就好。
网友评论