Proc Freq和唯一ID值

时间:2014-03-11 17:27:52

标签: sas frequency

我有一个包含两列的表,ID和Gender如下所示

enter image description here

我正在计算男性和女性的数量。我写了这样的代码

Proc Freq data = Work.Test1; 表性别; 运行;

我得到的输出是5个女性和2个女性,我知道这是错误的,因为Id重复多次,只有2个男性和1个女性。我的问题是我如何改变Proc Freq,以便获得唯一Id值的性别(男性和女性)计数?

3 个答案:

答案 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 /性别的一条记录,然后您可以为性别运行您的频率。