楼主: cattii
1450 1

[原创博文] Proc tabulate [推广有奖]

  • 0关注
  • 0粉丝

已卖:38份资源

高中生

40%

还不是VIP/贵宾

-

威望
0
论坛币
201 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
282 点
帖子
20
精华
0
在线时间
11 小时
注册时间
2007-3-21
最后登录
2016-12-23

楼主
cattii 发表于 2012-3-3 03:51:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
Data:
v1 v2 v3
1   1   .
2   .    1
1   2  3

How can I get results:
         Missing    1                 2        3
           N         N    %      N   %    N     %
V1        1         2  100%
V2        1        1    50%   1    50%  0   0%
V3        0         1     33%  1    33%  1   33%

有一列显示MISSING,但是计算百分比的时候,不算MISSING.

Thanks a lot!!!
二维码

扫码加我 拉你入群

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

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

关键词:Tabulate Late Abu ATE tab 百分比

沙发
sl122113 发表于 2012-3-8 14:57:21
试试这个,有点繁琐。
  1. data a;
  2. input v1 v2 v3;
  3. cards;
  4. 1 2 1
  5. 1 . 2
  6. . 1 3
  7. ;
  8. run;
  9. ods output summary=miss;
  10. proc means data=a nmiss;
  11. var v1 v2 v3;
  12. run;
  13. ods output off;

  14. data miss1;
  15. set miss;
  16. run;      

  17. ods output OneWayFreqs=b1;
  18. proc freq data=a;
  19. table v1/crosslist nocum ;
  20. run;
  21. ods output off;
  22. data b11;
  23. set b1;
  24. keep table frequency percent;
  25. table='v1';
  26. run;

  27. ods output OneWayFreqs=b2;
  28. proc freq data=a;
  29. table v2/crosslist nocum ;
  30. run;
  31. ods output off;
  32. data b22;
  33. set b2;
  34. table='v2';
  35. if v2=2 then do;
  36. frequency1=frequency;
  37. percent1=percent;
  38. end;
  39. keep table frequency percent frequency1 percent1;
  40. format percent1 5.2;
  41. where v2=2;
  42. run;
  43. ods output OneWayFreqs=b3;
  44. proc freq data=a;
  45. table v3/crosslist nocum ;
  46. run;
  47. ods output off;
  48. data b33;
  49. set b3;
  50. table='v3';
  51. retain frequency1;
  52. retain percent1;
  53. if v3=2 then do;
  54. frequency1=frequency;
  55. percent1=percent;
  56. end;
  57. if v3=3 then do;
  58. frequency2=frequency;
  59. percent2=percent;
  60. end;
  61. format percent1 percent2 5.2;
  62. drop F_v3;
  63. run;
  64. data b33;
  65. set b33;
  66. where v3=3;
  67. drop v3;
  68. run;
  69. data b;
  70. set b11 b22 b33;
  71. run;
  72. data miss1;
  73. set miss;
  74. do i=1 to 3;
  75. if i=1 then do;
  76. v1_NMiss=v1_NMiss;
  77. output;
  78. end;
  79. else if i=2 then do;
  80. v1_NMiss=v2_NMiss;
  81. output;
  82. end;
  83. else v1_NMiss=v3_NMiss;output;
  84. end;
  85. run;
  86. data miss2;
  87. set miss1;
  88. by i;
  89. if first.i=1;
  90. keep VName_v1 v1_NMiss;
  91. rename v1_NMiss=missing;
  92. if i=1 then VName_v1 = 'v1';
  93. else if i=2 then VName_v1='v2';
  94. else VName_v1='v3';
  95. run;
  96. data final;
  97. merge miss2(rename=(VName_v1=table)) b;
  98. by table;
  99. run;

  100. options formchar="|----|+|---+=|-/\<>*" missing = " " nodate nonumber;
  101. proc report data =final nowindows spacing = 1 headline ls = 101 ps = 15 split = "|"style(column)={just=center};
  102. columns ("--" table missing
  103.                 ("1|--"frequency percent)
  104.                 ("2|--"frequency1 percent1)
  105.                 ("3|--"frequency2 percent2));
  106. define table/ "" center width=2;
  107. define missing/ "Missing|N" width=7 center;
  108. define frequency/ "N" center width=1;
  109. define percent/ "%" center;
  110. define frequency1/ "N" center width=1;
  111. define percent1/ "%" center;
  112. define frequency2/ "N" center width=1;
  113. define percent2/ "%" center;
  114. compute after _page_ / left;
  115. contline = "-----------";
  116. line @34 "------------------------------------";
  117. endcomp;
  118. run;
复制代码


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Actree + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Let Our Life Be Magic And Open

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 18:54