全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3188 5
2013-06-20
请问各位前辈,我现在要统计变量seg1至变量seg10中不同取值的个数,程序如下:

data d;
set c;
array seg[10] seg1-seg10;
seg_2=0;
ok:do i=1 to 10;
do k=i-1 to 1 by -1;
if k<=0 then goto to;
if substr(seg(i),1,2)=substr(seg(k),1,2) then goto ok;
end;
to:do j=i+1 to 10;
if substr(seg(i),1,2)^=' '  and substr(seg(i),1,2)^=substr(seg(j),1,2) then do;
seg_2+1;
goto ok;
end;
end;
end;
run;

但是这个程序好像陷入死循环了还是怎么的,我只统计第一、二、三个观测的时候(这三个观测seg1 到seg10中,每个观测都只有两个值,其余为空),非常快,可以准确计算,但当统计到第四个观测(有三个seg值)的时候,程序就一直在运行了。
请问这个程序哪里出问题了,或者大家有没有比较好的方法啊?


二维码

扫码加我 拉你入群

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

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

全部回复
2013-6-20 16:18:28
自己把这个帖子顶上去
二维码

扫码加我 拉你入群

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

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

2013-6-20 17:13:02
data c;
   array seg[10];
   do i=1 to 20;
      do j=1 to 10;
             seg(j)=int(ranuni(0)*10);
          end;
          output;
   end;
run;

data d;
        set c;
        array seg[10] seg1-seg10;
        value_num=0;
        length str $200;
        do i=1 to 10;
           if indexw(cats(str),cats(seg(i)),"*")=0 then do;
              value_num+1;
              str=catx("*",str,seg(i));
                end;
        end;
        put str= value_num=;
        drop i j;
run;
二维码

扫码加我 拉你入群

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

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

2013-6-21 10:50:20
/*  Here is another way  */
data c;
   array seg[10];
   do i=1 to 10;
      do j=1 to 10;
         seg(j)=int(ranuni(123)*10);
      end;
      output;
   end;
   drop i j;
run;

data D1;
   set c;
   array seg{10} seg1-seg10;
   length numbers $20;
   call sortn(of seg:);
   Distinct_N =1;
   numbers = seg(1);
      do i = 1 to dim(seg)-1;
         if seg(i) ^= seg(i+1) then do;
         Distinct_N+1;
         numbers= catx('_', numbers, seg(i+1));
         end;
      end;
  set c;   
  drop i;
run;
二维码

扫码加我 拉你入群

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

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

2013-6-22 10:23:50
yongyitian 发表于 2013-6-21 10:50
/*  Here is another way  */
data c;
   array seg[10];
噢啦,thank u~~~~SAS跳出循环是一门大学问的说~~~
二维码

扫码加我 拉你入群

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

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

2013-6-22 10:24:28
本问题已解决
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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