2015-02-09 93 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;