SAS的初级入门(三)

1. SAS 中的数组

其中array 后直接是数组名,中括号内是数组的长度,若中括号内是两个数字,则表示m行n列,如图中所示,则是5行3列

然后直接跟着数组表示的变量,若没有,则表示为 数组名+序号

小括号内表示数组元素的值

例子:

 1 data;
 2  array x{3} a b c (1 2 3); 
 3  file print;
 4  put x{1}= x{2}= x{3}=;
 5  run;
 6 
 7 data;
 8   array x{2,3} aa bb cc dd ee ff(1 2 3 4 5 6);
 9   file print;
10   put x{2,1}=;
11   run;
12 
13 data;
14    array x{2} $ aaa bbb('data' 'process');
15    file print;
16    put x{2}=;
17    run;
18 
19 data;
20    array x{6:9,0:9} x60-x99;
21    file print;
22    put x{7,0};
23    run;
24  

2. drop 和 keep 的使用

drop 是 data 步中删除变量的语句

‘keep 是 data 步中保留变量的语句

但是 drop 和 keep 是不能同时使用的

3. 测试

ex1:

program

 1 data ex1;
 2     input id1-id6;
 3     array x(*) id1-id6;
 4     do i=2 to dim(x);
 5         if x(i)-x(i-1)<=7 then do;
 6             x(i) = .;
 7         end;
 8     end;
 9     drop i;
10     cards;
11     1 2 7 23 100 1000
12     2 3 33 54 56 1000
13     3 . 4 6 44 100
14     ;
15 run;
16 
17 proc print data=ex1;
18 run;

ex2

program

 1 data a;
 2 input d1-d3;
 3 cards;
 4 1 2 7
 5 2 3 .
 6 3 . 4
 7 ;
 8 run;
 9 proc means data=a;
10 output out=new mean=m1 m2 m3;
11 run;
12 proc transpose data=new out=new1 prefix=m;
13 var m1 m2 m3;
14 run;
15 proc transpose data=a out=a1 prefix=d;
16 var d1-d3;
17 run;
18 data b;
19 merge a1 new1;
20 array arr{*} d1 d2 d3 m1;
21 do id=1 to dim(arr);
22 if arr{id}=. then arr{id}=arr{dim(arr)};
23 end;
24 proc transpose data=b out=b1 prefix=d;
25 var d1-d3;
26 data result;
27 set b1;
28 drop _name_;
29 run;
30 proc print data=result;
31 run;
原文地址:https://www.cnblogs.com/elkan/p/11000148.html