如何在sas中找到列的百分比值?

时间:2015-05-26 09:38:25

标签: sas

友 在SAS中,我们如何找到列的百分比值? 我的数据集输出及其代码如下 enter image description here

,代码是

data out.calculate_age;                                                                                                                 
set out.calculate_age ;                                                                                                                 
if age = "" then age = "All";                                                                                                           
if d=. then d=0;                                                                                                                        
if s=. then s=0;                                                                                                                        
if i=. then i=0;                                                                                                                        
tot = d+s+i;     /*CALCULATING TOTAL NO. PER GROUP*/                                                                                    
PERCENTAGE=round((tot/sum(tot))*100,.1); /*PERCENTAGE PER GROUP*/                                                                       
run;

我想,在'百分比'列中,值应为8 * 100 /(8 + 24 + 36 + 36 + 27),24 * 100 /(8 + 24 + 36 + 36 + 27),36 * 100 /(8 + 24 + 36 + 36 + 27)等......  我知道sum(tot)是8 / 8,24 / 24等...(它按行计算)......

那么我应该怎么做才能获得正确的百分比?

1 个答案:

答案 0 :(得分:1)

您可以总计总计数的计数并将其放入宏变量中:

proc sql ;
  select sum(d)+sum(i)+sum(s)
  into :N
  from input 
;quit ;

然后您可以在代码中引用它:

data out.calculate_age;                                                                                                                 
set out.calculate_age ;                                                                                                                 
if age = "" then age = "All";                                                                                                           
if d=. then d=0;                                                                                                                        
if s=. then s=0;                                                                                                                        
if i=. then i=0;                                                                                                                        
tot = d+s+i;     /*CALCULATING TOTAL NO. PER GROUP*/                                                                                    
PERCENTAGE=round(tot/&N.,.1); /*PERCENTAGE PER GROUP*/                                                                       
run;