楼主: liuliuqiu
2293 22

[问答] SAS求教 [推广有奖]

21
zwnSAS121 发表于 2017-1-14 23:14:34 |只看作者 |坛友微信交流群
这是结果。

QQ截图20170114231359.png (4.56 KB)

QQ截图20170114231359.png

使用道具

22
zwnSAS121 发表于 2017-1-15 13:01:53 |只看作者 |坛友微信交流群
  1. data company1;
  2. input id $ country $ startyear;
  3. label id="企业ID"
  4.       country="出口国家ID"
  5.           startyear="开始出口年份";
  6. datalines;
  7. 1391910 392 2009
  8. 1392010 410 2008
  9. 1392061 392 2007
  10. 1392061 842 2009
  11. 1392321 842 2009
  12. 1392390 842 2009
  13. 1852990 158 2008
  14. 1852990 344 2009
  15. 1900120 344 2008
  16. 1900120 392 2009
  17. 1900120 410 2008
  18. ;
  19. data company2;
  20. input id $ country $ startyear;
  21. label id="企业ID"
  22.       country="出口国家ID"
  23.           startyear="开始出口年份";
  24. datalines;
  25. 1391910 392 2009
  26. 1391910 410 2008
  27. 1391910 842 2007
  28. 1392010 410 2008
  29. 1392010 392 2007
  30. 1392010 410 2009
  31. 1392061 392 2007
  32. 1392061 842 2009
  33. 1392321 842 2009
  34. 1392390 842 2009
  35. 1852990 158 2008
  36. 1852990 344 2009
  37. 1900120 344 2008
  38. 1900120 392 2009
  39. 1900120 410 2008
  40. 1900120 528 2004
  41. 1900120 458 2001
  42. 1900120 484 2003
  43. ;
  44. /*company1和company2中有id代表企业,country为出口的国家,startyear
  45. 为开始对该国出口的时间,想在a的基础上得到在a出口某个country之前,在b中
  46. 该企业有无出口其他国家的经历,并统计出出口国家的个数。

  47. 例如企业1391910,在a中,2009年开始向392出口,
  48. 再看b中2009年前该企业是否有出口其他国家的经历,
  49. 在b中,该企业2007年和2008年分别开始出口842和410国家,
  50. 则有出口经验,且有两个国家。依次类推。。。*/
  51. /*程序1*/

  52. /*增加标识变量*/
  53. data company1;set company1;group="A表";run;
  54. data company2;set company2;group="B表";run;
  55. /*安装id与开始出口年份降序排序*/
  56. proc sort data=company1 out=company1_1;by id startyear;run;
  57. /*取来自A表开始出口的最小年份*/
  58. data nodup_min_year;set company1_1;by id;if first.id;run;
  59. /*join内联查询按id并且按另一个变量条件筛选*/
  60. proc sql;
  61. create table test1 as
  62. select B.id,B.country,B.startyear,B.group,A.startyear
  63. from nodup_min_year as A  /*原来A表去重并保留最小的出口年份*/
  64. join company2 As B /*原来表B*/
  65. On A.id=B.id /*关联企业id相同的记录*/
  66. and B.startyear < A.startyear;
  67. /*按A、B表在相同的企业id下,筛选B表年份小于A表最小年份的出口国家*/
  68. quit;/*test1表输出了来自B表满足年份条件的企业及出口国家数*/
  69. proc sql;/*计算每个企业每年出口国家数*/
  70. create table test2 as select *,count(country)
  71. as num_country from test1
  72. group by id,startyear;
  73. quit;

  74. title color=red bold font="Time New Roman" "企业每年出口国家情况报告" ;
  75. ods pdf file="D:\country_report.pdf";
  76. ods layout gridded rows=2 row_gutter=0in;
  77. proc report data=test2
  78. style(header)={background=white foreground=blue}
  79. style(column)={background=white foreground=black};
  80. column id startyear country num_country;
  81. define id / group;
  82. define startyear / "出口年份" group;
  83. define country / group;
  84. define num_country / "出口国家数量" analysis sum;
  85. break after id / ol skip summarize suppress;
  86. rbreak after / dol skip summarize;
  87. run;
  88. ods layout end;
  89. ods pdf close;
复制代码

使用道具

23
zwnSAS121 发表于 2017-1-15 13:03:19 |只看作者 |坛友微信交流群
这是最终报表

QQ截图20170115130227.png (8.38 KB)

QQ截图20170115130227.png

使用道具

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

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

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

GMT+8, 2024-4-20 00:11