使用proc方法计算SAS中的百分比

时间:2013-09-21 00:15:34

标签: sas

我在SAS中有一些我需要操作的数据,但我遇到了麻烦。我的专栏是

id#,年龄和男性

1 20 N

2 20 Y

3 21 Y

4 23 N

5 21 Y

6 21 N

7 20 N

8 21 Y

9 23 Y

有没有办法让%男性与年龄相比?也就是说,年龄是列,每列我想知道男性的百分比?我希望能够使用proc手段而不是proc表格来找到它。感谢。

2 个答案:

答案 0 :(得分:1)

除了1/0字段的特殊情况外,这不是PROC意思所做的。您可以将Y和N转换为1和0并取新场的平均值,这相当于男性的百分比;但是,对于数据,PROC MEANS无法为您提供每个类别中的百分比。这就是PROC FREQPROC TABULATE的作用。

答案 1 :(得分:0)

data input;
input id age male $;
cards;
1 20 N
2 20 Y
3 21 Y
4 23 N
5 21 Y
6 21 N
7 20 N
8 21 Y
9 23 Y
;
run;

ods trace on;
ods output CrossTabFreqs=work.stats;
proc freq data=input;
tables age*male;
run;

您的结果:

options nolabel;
proc sql;
select age, RowPercent as MalePercent, 100 - RowPercent as WomanPercent
from work.stats
where _type_='11' and male='Y';
quit;

'11'是二元的“年龄和男性变量都有助于这次总结观察”。

在这样的问题中,可以说你是想要“看到”结果还是想将它存储在一个表中(这可能就是为什么PROC TABULATE被拒绝了?)。