全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
921 3
2012-11-20
数据如下:
a1a2a3


想得到如下的字符串:
第一位是A1里的,第二位是A2里的,第三位是A3里的。
该怎么编程呢?
我做的循环大致如下:(按列,新建3个数据集)
        set a b c;
        do i=1 to 14;
                if ida=i then name1=na;
                        do j=1 to 12;
                        if idb=j then name2=nb;
                                do k=1 to 12;
                                if idc=k then name3=nc;
                                namef=trim(name1)||trim(name2)||trim(name3);
                        end;end;end;

na nb nc 分别是a b c 里的字段,ida idb idc 分别是为他们新增的ID号。


最后的结果是,这个数据集只有14+12+12条数据,并不是14*12*12个。这是为什么呢?循环的不对啊。
哪里出了问题?
二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-20 15:51:55

data a;
   do ida =1 to 14;
       na=byte(64+ida);
           output;
        end;
run;


data b;
   do idb =1 to 12;
       nb=byte(96+idb);
           output;
        end;
run;

data c;
   do idc=1 to 12;
       nc=cats(idc);
           output;
        end;
run;


proc sql;
  create table test as
    select distinct ida,idb,idc,na as name1, nb as name2, nc as name3
                        , cats(na,nb,nc) as namef
                from a,b,c
                order by ida,idb,idc;
quit;
二维码

扫码加我 拉你入群

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

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

2012-11-20 15:56:26
data步:

data test1;
   set a;
   do i=1 to nobs_b;
      set b nobs=nobs_b point=i;
          do j=1 to nobs_c;
             set c nobs=nobs_c point=j;
                    name1=na; name2=nb; name3=nc;
                        namef=cats(name1,name2,name3);
                 output;
          end;
        end;
run;
二维码

扫码加我 拉你入群

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

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

2012-11-20 17:08:06
pobel 发表于 2012-11-20 15:56
data步:

data test1;
这个太有帮助了。
set本身是一个循环,另外的两个循环,分别指定指针的位置。
谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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