如何在 sas 中查找列的百分比值?
How to find percentage values of a column in sas?
朋友们,
在 SAS 中,我们如何找到列的百分比值?
我的数据集输出及其代码如下
代码是
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;
我想在 'percentage' 列中,值应该是 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 等...(按行计算)...
那么我应该怎么做才能获得正确的百分比?
您可以将总计数相加并将其放入宏变量中:
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;
朋友们,
在 SAS 中,我们如何找到列的百分比值?
我的数据集输出及其代码如下
代码是
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;
我想在 'percentage' 列中,值应该是 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 等...(按行计算)...
那么我应该怎么做才能获得正确的百分比?
您可以将总计数相加并将其放入宏变量中:
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;