【发布时间】:2014-04-15 12:03:21
【问题描述】:
我有一个包含两列 ID 和 Gender 的表格,如下所示
我正在尝试计算男性和女性的数量。我写了这样的代码
Proc Freq 数据=Work.Test1; 表格性别; 运行;
我得到的输出是 5 男 2 女,我知道这是错误的,因为 Id 重复了很多次,只有 2 男 1 女。我的问题是如何更改 Proc Freq 以便获得唯一 ID 值的性别(男性和女性)计数?
【问题讨论】:
我有一个包含两列 ID 和 Gender 的表格,如下所示
我正在尝试计算男性和女性的数量。我写了这样的代码
Proc Freq 数据=Work.Test1; 表格性别; 运行;
我得到的输出是 5 男 2 女,我知道这是错误的,因为 Id 重复了很多次,只有 2 男 1 女。我的问题是如何更改 Proc Freq 以便获得唯一 ID 值的性别(男性和女性)计数?
【问题讨论】:
您可以在 proc freq 中使用 Nlevels
Proc freq data= yourdata NLEVELS;
tables gender /noprint;
run;
【讨论】:
如果不使用 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 或许可以做你想做的事,但我想不出一个快速的方法。
【讨论】:
试试这个:
proc sort data=have out=want nodupkey;
by id gender;
proc freq data=want;
tables gender;
run;
这将为每个 ID/性别提供一条记录,然后您可以针对性别运行频率。
【讨论】: