我在 SAS 中有一些需要处理的数据,但我遇到了麻烦。我的专栏是
id#、年龄和男性
1 20 牛
2 20 岁
3 21 岁
4 23 牛
5 21 岁
6 21 牛
7 20 牛
8 21 是
9 23 是
有没有办法获得男性与年龄的百分比?也就是说,年龄是列,对于每一列,我想知道男性的百分比?我希望能够使用 proc 方法而不是 proc tabulate 来找到它。谢谢。
我在 SAS 中有一些需要处理的数据,但我遇到了麻烦。我的专栏是
id#、年龄和男性
1 20 牛
2 20 岁
3 21 岁
4 23 牛
5 21 岁
6 21 牛
7 20 牛
8 21 是
9 23 是
有没有办法获得男性与年龄的百分比?也就是说,年龄是列,对于每一列,我想知道男性的百分比?我希望能够使用 proc 方法而不是 proc tabulate 来找到它。谢谢。
这不是 PROC MEANS 所做的,除了 1/0 字段的特殊情况。您可以将 Y 和 N 转换为 1 和 0 并取该新字段的平均值,这相当于男性的百分比;但是,就数据而言,PROC MEANS
无法为您提供每个类别的百分比。那是什么PROC FREQ
或做什么PROC TABULATE
。
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 被拒绝的原因?)。