SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 953|回复: 1
打印 上一主题 下一主题

求教sas数组的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-10-22 23:42:23 | 只看该作者

求教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;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-8-5 16:50:25 | 只看该作者

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]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-4 01:34 , Processed in 0.135157 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表