楼主: numman
10490 11

[原创博文] 求教关于sas hash 中在分类数据中的用法 [推广有奖]

11
shenliang_111 发表于 2011-12-18 18:34:34
  1. data data1;
  2. input kind$ id$;
  3. cards;
  4. a          1
  5. a          2
  6. b          1
  7. b          3
  8. c          2
  9. c          3
  10. ;
  11. run;
  12. data data2;
  13. input id$ amt;
  14. cards;
  15. 1       50
  16. 2       40
  17. 2       30
  18. 3       30
  19. ;
  20. run;
  21. /*sql*/
  22. proc sql;
  23. create table result as
  24. select distinct a.kind,sum(amt) as sum_amt
  25. from data1 a join data2 b
  26. on a.id=b.id
  27. group by 1
  28. order by 1
  29. ;
  30. quit;
  31. /*hash---9.2下*/
  32. data result333222;
  33. if 0 then set data2;
  34. if _n_=1 then do;
  35.   declare hash h(dataset:'data2',multidata:'y');
  36.   h.definekey('id');
  37.   h.definedata('amt');
  38.   h.definedone();
  39. end;
  40. total=0;
  41. do _n_=1 by 1 until(last.kind);
  42.   set data1;
  43.   by kind;
  44.   if h.find()=0 then do;
  45.      total+amt;
  46.      h.has_next(result:r);
  47.          do while(r ne 0);
  48.          h.find_next();
  49.          total+amt;
  50.          h.has_next(result:r);
  51.          end;
  52.    end;
  53.   if last.kind then output;
  54.   end;
  55.   run;

  56.       
  57.       
复制代码

12
geokaran 发表于 2013-3-14 00:44:14
good

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 07:16