我在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表格来找到它。感谢。
答案 0 :(得分:1)
除了1/0字段的特殊情况外,这不是PROC意思所做的。您可以将Y和N转换为1和0并取新场的平均值,这相当于男性的百分比;但是,对于数据,PROC MEANS
无法为您提供每个类别中的百分比。这就是PROC FREQ
或PROC 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被拒绝了?)。