最近在学习sas数组问题,很多地方百思不得其解,譬如说sas数组都是储存变量的,那么二维的和一维的有什么区别呢?分别适合于什么情况等等,不知道大家有没有什么这方面比较好的资料。
还有如果用SAS写一个100*100的单位矩阵,用数组怎么写啊?我暂时只想到这个,又觉得通用性不好,大家有什么其他办法没有??先行谢过。。
data a;
array c{10,10};
do k=1 to 100;
do i=1 to 10;
do j=1 to 10;
if k=(i-1)*10+j then c(i,j)=1;
else c(i,j)=0;
end;
end;
output;
end;
drop i j k;
run;
data ads;
array x(*) x1 - x8;
do i = 1 to 6;
do j=1 to 8;
x(j)=i*j;
end;
output;
end;
drop i j;
run;
[/code:3otiey3c]
[color=#FF40BF:3otiey3c]程序二:一维数组[/color:3otiey3c]
[code:3otiey3c]
data bds;
set ads;
array y _numeric_;
do over y;
if y>25 then y=0;
end;
run;
[/code:3otiey3c]
[color=#FF00FF:3otiey3c]程序三:用一维数组给二维数组赋值[/color:3otiey3c]
[code:3otiey3c]
data _null_;
set ads;
array t1 _numeric_;
array t2[6,8] _temporary_;
do i=1 to dim(t1);
t2[_n_,i]=t1[i];
end;
run;
[/code:3otiey3c]
[color=#FF00BF:3otiey3c]程序四:以数组方式生成单位矩阵[/color:3otiey3c]
[code:3otiey3c]
data cds;
array z(*) z1 - z100;
do i = 1 to 100;
do j=1 to 100;
if i=j then z(j)=1;
else z(j)=0;
end;
output;
end;
drop i j;
run;