楼主: jegofurue
2267 13

[有偿编程] 急需解决方法,多谢! [推广有奖]

11
qiaosonh 发表于 2014-9-21 10:33:15 |只看作者 |坛友微信交流群
%macro tree(_inds=);
proc sql noprint;
select distinct tree into :varlist separated by ' '
from &_inds;
quit;

%let i=1;
%let var=%scan(&varlist,&i,%str( ));
%do %while(&var ne );
data tmp pool;
  set &_inds;
        where tree="&var";
        by tree;
        n+1;
        if last.tree then call symput("n",strip(put(n,best.)));
        rename source_account=_1 target_account=_2;
        if _n_=1 then output tmp;
        else output pool;
        drop n id;
run;

%do j=1 %to %eval(&n-1);
data tmp;
  merge tmp(in=a)        pool(rename=(_2=_%eval(&j+2) _1=_%eval(&j+1)));
        by tree _%eval(&j+1);
        if a;
run;
%end;

data &var;
  set tmp;
run;

%let i=%eval(&i+1);
%let var=%scan(&varlist,&i,%str( ));
%end;

%mend;

%tree(_inds=test);
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

总评分: 论坛币 + 50   查看全部评分

使用道具

12
zhengbo8 发表于 2014-9-21 14:48:29 |只看作者 |坛友微信交流群
我大概想到的方法,不知道是否是你想要的。
若你还要修改,只有你自己再改改了,希望对你有启发。

  1. data test;
  2. input
  3.         id   
  4.         tree $
  5.         source_account $
  6.         target_account $;
  7. cards;
  8. 1 A0000001 A0000001 A0000002
  9. 2 A0000001 A0000002 A0000003
  10. 3 A0000001 A0000003 A0000004
  11. 4 A0000001 A0000004 A0000005
  12. 5 B0000001 B0000001 A0000002
  13. 6 B0000001 A0000002 B0000003
  14. 7 B0000001 B0000003 A0000003
  15. 8 B0000001 A0000003 B0000004
  16. 9 C0000001 C0000001 B0000002
  17. 10 C0000001 B0000002 B0000003
  18. 11 C0000001 B0000003 B0000004
  19. 12 C0000001 B0000004 B0000005
  20. 13 D0000001 D0000001 B0000002
  21. 14 D0000001 B0000002 A0000003
  22. 15 D0000001 A0000003 B0000004
  23. 16 D0000001 B0000004 B0000005
  24. ;
  25. run;

  26. goptions reset=all;
  27. symbol v=dot l=1 i=join pointlabel;
  28. proc gplot data=test;
  29.         plot source_account*tree=tree;
  30. run;
复制代码
2014-09-21_145141.JPG

使用道具

13
jegofurue 发表于 2014-9-21 21:58:23 |只看作者 |坛友微信交流群
qiaosonh 发表于 2014-9-21 10:33
%macro tree(_inds=);
proc sql noprint;
select distinct tree into :varlist separated by ' '
谢谢你的回复,花了很多心思吧,可是我要的是把结果画出来,感谢。

使用道具

14
jegofurue 发表于 2014-9-21 21:59:06 |只看作者 |坛友微信交流群
zhengbo8 发表于 2014-9-21 15:11
算了吧,没实现,还有很多问题没解决,代码错的。
今天加班没来得及回你,你做的还不错,虽然没有实现,但是花心思了,多谢了哈。

使用道具

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

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

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

GMT+8, 2024-4-24 11:01