1

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

id#、年龄和男性

1 20 牛

2 20 岁

3 21 岁

4 23 牛

5 21 岁

6 21 牛

7 20 牛

8 21 是

9 23 是

有没有办法获得男性与年龄的百分比?也就是说,年龄是列,对于每一列,我想知道男性的百分比?我希望能够使用 proc 方法而不是 proc tabulate 来找到它。谢谢。

4

2 回答 2

1

这不是 PROC MEANS 所做的,除了 1/0 字段的特殊情况。您可以将 Y 和 N 转换为 1 和 0 并取该新字段的平均值,这相当于男性的百分比;但是,就数据而言,PROC MEANS无法为您提供每个类别的百分比。那是什么PROC FREQ或做什么PROC TABULATE

于 2013-09-21T05:04:42.017 回答
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 被拒绝的原因?)。

于 2013-09-21T11:40:27.980 回答