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;