全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2775 12
2012-09-05
原始data aa  希望可以根据变量a1  a2  a3  a4 排序1-4; 得到对应的d1   d2   d3   d4 的值;并且只要前两个,及a1  a2  a3  a4 中为1和2的值;得到data BB;
data aa;
   input   a1  a2  a3  a4   d1   d2   d3   d4 @@;
   cards;
         2    1   4   3   145  45   34   45
         1    3   3   1    43   3   55   45
         .    2   .   4     .  32    .   44
         3    4   1   .    44  55    3    .
         4    .   2   2    22       34    6
   ;
run;
希望得到DATA  BB如下:
a1  a2  a3  a4   d1   d2   d3   d4  
1    1   1   1      43   45   3    45
2    2   2   2     145   32   34   6
求高手:

二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-5 10:23:39
路过。。拿分闪人!
二维码

扫码加我 拉你入群

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

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

2012-9-5 10:34:25
求高手
二维码

扫码加我 拉你入群

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

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

2012-9-5 11:43:40
帮你一忙, 大恩不言谢
复制代码
二维码

扫码加我 拉你入群

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

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

2012-9-5 12:38:42
data aa;
   input   a1  a2  a3  a4   d1   d2   d3   d4 @@;
   cards;
2    1   4   3   145  45   34   45
1    3   3   1    43   3   55   45
.    2   .   4     .  32    .   44
3    4   1   .    44  55    3    .
4    .   2   2    22  .     34    6
;
run;


%macro twomin(num);
if a&num ne . then do;
      if mst(1,&num) = 0 or a&num<mst(1,&num) then do;
            mst(2,&num)=mst(1,&num);
                trn(2,&num)=trn(1,&num);
        mst(1,&num)=a&num;
                trn(1,&num)=d&num;
          end;
      else if mst(2,&num) = 0 or a&num<mst(2,&num) then do;
           mst(2,&num)=a&num;
                   trn(2,&num)=d&num;
          end;
  end;   
%mend twomin;

data bb(drop=i j);
        array mst(2,4) _temporary_;
        array trn(2,4) _temporary_;
        do i=1 to 2;
          do j=1 to 4;
            mst(i,j)=0;
                trn(i,j)=0;
          end;
        end;
        do i=1 to toobs;
           set aa point=i nobs=toobs;       
       %twomin(1)
           %twomin(2)
           %twomin(3)
           %twomin(4)
        end;
        do i=1 to 2;
           a1=mst(i,1);
           a2=mst(i,2);
           a3=mst(i,3);
           a4=mst(i,4);
           d1=trn(i,1);
           d2=trn(i,2);
           d3=trn(i,3);
           d4=trn(i,4);
      output;
    end;       
        stop;

run;

proc print data=bb;
run;
二维码

扫码加我 拉你入群

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

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

2012-9-5 17:07:44
applebobysps 发表于 2012-9-5 10:34
求高手
谢谢  很好理解很好用  麻烦问一下 我的变量有50个 观测30   取前10.。。那样的话跑起来会不会很慢
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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