全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10457 4
2010-09-18
请问如果我有一张100×100的SAS数据集的表。我现在想用二维数组对表中大于某个阈值的数进行定位,例如array[j]>alpha,则输出i,j。我的问题是如何将表中的数据表达到二维数组中,例如array a{100,100}  a(1,1)-a(100,100) 后面的值应该怎么赋予,不要告诉小弟一个个手输。
希望高手可以指点一下。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-9-19 12:20:17
lucyber 发表于 2010-9-18 22:05
请问如果我有一张100×100的SAS数据集的表。我现在想用二维数组对表中大于某个阈值的数进行定位,例如array[j]>alpha,则输出i,j。我的问题是如何将表中的数据表达到二维数组中,例如array a{100,100}  a(1,1)-a(100,100) 后面的值应该怎么赋予,不要告诉小弟一个个手输。
希望高手可以指点一下。
Here is an example for a 10 by 10 case.

data t1;
array x(*) x1 - x10;
  do i = 1 to 10;
     do j=1 to 10;
        x(j)=ceil(ranuni(123)*10);
     end;
    output;
  end;
  drop i j;
run;

proc print; run;

data X_LE_9;
  set t1;
  array x(*)  x1-x10;
  i+1;
  do j=1 to dim(x);
      if x(j) >=9 then do;
           x_le_9=x(j);
           output;
     end;
  end;
  keep i j     x_le_9;
run;

proc print; run;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-19 15:00:19
引用楼上的一段程序,后面是我的方法。

data t1;
array x(*) x1 - x10;
  do i = 1 to 10;
     do j = 1 to 10;
        x(j) = ceil( ranuni(123) * 10 );
     end;
    output;
  end;
  drop i j;
run;

data t2;
        array m{10,10} _temporary_;
        retain m;
        set t1 end=eof;
        array temp{10} x1-x10;
        i + 1;
        do j = 1 to 10;
                m{i,j} = temp{j};
        end;
        if eof then do;
                do i = 1 to 10;
                                put m{i,1} m{i,2} m{i,3} m{i,4} m{i,5} m{i,6} m{i,7} m{i,8} m{i,9} m{i,10};
                end;
        end;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-11 11:36:30
mark
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-11 12:02:49
bobguy 发表于 2010-9-19 12:20
Here is an example for a 10 by 10 case.

data t1;
你好,我试了一下程序,但不知道为什么换了10,换成其他的数竟然不能运行,是怎么回事啊,请教!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群