SAS中文论坛

标题: 求教sas数组的问题 [打印本页]

作者: shiyiming    时间: 2009-10-22 23:42
标题: 求教sas数组的问题
最近在学习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;
作者: shiyiming    时间: 2012-8-5 16:50
标题: Re: 求教sas数组的问题
以下是在使用数组时的个人体会,不当之处请各位指点:
对于一张二维的数据表,既可以定义成一维的数组,也可以定义成二维的数组,但二维数组可以更方便地以坐标定位的方式对表中的数据进行修改计算等。这是因为在sas中有隐含的数据
步的内循环。
[color=#FF00FF:3otiey3c]程序一:生成数据[/color:3otiey3c]
[code:3otiey3c]

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;


[/code:3otiey3c]




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2