楼主: applebobysps
2225 12

[问答] 请教sas 排序取值问题 [推广有奖]

  • 6关注
  • 0粉丝

本科生

17%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1031 点
帖子
67
精华
0
在线时间
65 小时
注册时间
2011-5-19
最后登录
2018-10-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
原始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
求高手:

二维码

扫码加我 拉你入群

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

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

关键词:cards Input Data card 求高手

回帖推荐

haku_x300 发表于5楼  查看完整内容

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

本帖被以下文库推荐

沙发
9518s 发表于 2012-9-5 10:23:39 |只看作者 |坛友微信交流群
路过。。拿分闪人!

使用道具

藤椅
applebobysps 发表于 2012-9-5 10:34:25 |只看作者 |坛友微信交流群
求高手

使用道具

板凳
Imasasor 发表于 2012-9-5 11:43:40 |只看作者 |坛友微信交流群
帮你一忙, 大恩不言谢
  1. %macro sex;
  2. %do i=1 %to 4;
  3. data a&i;
  4. set aa;
  5. keep a&i d&i;
  6. run;
  7. proc sort data=a&i;
  8. by a&i;
  9. run;
  10. data a&i;
  11. set a&i;
  12. if a&i not in (1,2) then delete;
  13. run;
  14. %end;
  15. data final;
  16. retain a1-a4 d1-d4;
  17. merge a1 a2 a3 a4;
  18. run;
  19. %mend;

  20. %sex;
复制代码
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

报纸
haku_x300 发表于 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;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

地板
applebobysps 发表于 2012-9-5 17:07:44 |只看作者 |坛友微信交流群
applebobysps 发表于 2012-9-5 10:34
求高手
谢谢  很好理解很好用  麻烦问一下 我的变量有50个 观测30   取前10.。。那样的话跑起来会不会很慢

使用道具

7
applebobysps 发表于 2012-9-5 17:09:05 |只看作者 |坛友微信交流群
Imasasor 发表于 2012-9-5 11:43
帮你一忙, 大恩不言谢
谢谢  很好理解很好用  麻烦问一下 我的变量有50个 观测30   取前10.。。那样的话跑起来会不会比较慢;而且会生成很多data

使用道具

8
applebobysps 发表于 2012-9-5 17:11:22 |只看作者 |坛友微信交流群
haku_x300 发表于 2012-9-5 12:38
data aa;
   input   a1  a2  a3  a4   d1   d2   d3   d4 @@;
   cards;
谢谢高手  。。这个运行很快。麻烦再请教一下  如果变量很多。。。50*30的。。。。是不是要写很长code
每个变量都要重新定义一次

使用道具

9
Imasasor 发表于 2012-9-5 17:14:51 |只看作者 |坛友微信交流群
applebobysps 发表于 2012-9-5 17:07
谢谢  很好理解很好用  麻烦问一下 我的变量有50个 观测30   取前10.。。那样的话跑起来会不会很慢
小数据,不会慢,你的变量是有规律的,有规律的变量都可以简写。a1 a2....a50,就可以写成a1-a50
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

10
applebobysps 发表于 2012-9-5 17:24:25 |只看作者 |坛友微信交流群
Imasasor 发表于 2012-9-5 17:14
小数据,不会慢,你的变量是有规律的,有规律的变量都可以简写。a1 a2....a50,就可以写成a1-a50
恩  前面的变量我是这样简写的  merge 的时候  是不是不能用简写了?

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 14:05