我有一个包含两列的表,ID和Gender如下所示
我正在计算男性和女性的数量。我写了这样的代码
Proc Freq data = Work.Test1; 表性别; 运行;
我得到的输出是5个女性和2个女性,我知道这是错误的,因为Id重复多次,只有2个男性和1个女性。我的问题是我如何改变Proc Freq,以便获得唯一Id值的性别(男性和女性)计数?
答案 0 :(得分:3)
您可以在proc freq中使用Nlevels
Proc freq data= yourdata NLEVELS;
tables gender /noprint;
run;
答案 1 :(得分:0)
如果不使用SQL或数据步骤来解决这个问题,我不确定这是否容易。
proc sql;
create table want as
select gender, count(distinct id) as count
from have
group by gender;
quit;
或(按性别ID排序)
data want;
set have;
by gender id;
if first.gender then count=0;
if first.id then count+1;
if last.gender then output;
run;
PROC TABULATE
也许可以做你想做的事,但我无法想出一个快速的方法。
答案 2 :(得分:0)
试试这个:
proc sort data=have out=want nodupkey;
by id gender;
proc freq data=want;
tables gender;
run;
这将为您提供每个ID /性别的一条记录,然后您可以为性别运行您的频率。