2015-02-09 94 views
1
百分比

我是新来的SAS所以这里寻找建议/想法..计数及其SAS

基本上我想创建一个包含的意见数量,某些群体的比例汇总表/报告手段。

请看下面的例子:

A/C No Status DaysToStatus 
1  Suspend 10 
2  Blocked 20 
3 
4  Suspend 20 

我的预期输出/报告是这样的:

Average Days To Suspend Average Days to Blocked % Suspend %Blocked 
15       20       50%   25% 

我可以很容易地使用PROC报告功能做的平均水平,但我在努力纳入观察及其计算功能的百分比。

关于我如何去做这件事的任何想法?

回答

1

准备数据第一

 data have; 
     Number = 1; 
     Status = 'Suspend'; 
     DaysToStatus = 10; 
     output; 
     Number = 2; 
     Status = 'Blocked'; 
     DaysToStatus = 20; 
     output; 
     Number = 3; 
     Status = ''; 
     DaysToStatus =.; 
     output; 
     Number = 4; 
     Status = 'Suspend'; 
     DaysToStatus =20; 
     output; 
     run; 

这应该为你工作:

  data want; 
      set have end = eof; 
      if Status='Suspend' then do; 
       sum_suspend+DaysToStatus; 
       count_suspend+1; 
      end; 
      else if status='Blocked' then do; 
       sum_blocked+DaysToStatus; 
       count_blocked+1; 
      end; 
      total_sum+DaysToStatus; 
      total_count = _n_; 
      Average_Days_To_Suspend = sum_suspend/count_suspend; 
      Average_Days_To_blocked = sum_blocked/count_blocked; 
      percent_suspend = count_suspend/total_count; 
      percent_blocked = count_blocked/total_count; 
      if eof; 
      drop n status number DaysToStatus sum_: count_: total_:; 
      run; 
3

您还没有贴出你的代码,这样的做法可能不一样的你。我不认为你需要compute。使用三列构建报告:status(组),daystostatus mean,以及统计行数的pctn。使用proc report语句中的missing选项可将总数的百分比作为基准,包括缺少状态的百分比。

proc report data=yourdata missing nowd; 
    column status daystostatus pctn; 
    define status/group; 
    define daystostatus/analysis mean 'Avg days to status'; 
    define pctn/'Pct of total' format=percent10.; 
run; 
+0

迄今为止比我提出的更好的解决方案。谢谢。 – user2518751 2015-02-09 06:13:39

1

proc sql;

选择 总和(情况下,当状态当量 '挂起' 然后DaysToStatus否则为0结束)/ SUM(情况下,当状态当量 '挂起' 然后DaysToStatus否则为0结束时)作为
avg_days_to_suspend,

总和(情况下,当状态当量“冻结”,那么DaysToStatus否则为0结束)/ 总和(情况下,当状态当量“冻结”然后DaysToStatus否则为0结束时)作为
avg_days_to_blocked,

总和(情况下,当状态当量“挂起”然后DaysToStatus否则为0
end)/ sum(Da​​ysToS tatus)作为percent_suspend格式= percent7.0,

总和(情况下,当 '已封锁' 然后DaysToStatus别的0
端)/ SUM(DaysToStatus状态当量)作为percent_blocked格式= percent7.0

从工作。 in_ds;/*用您自己的数据集替换work.in_ds */

quit;