1

我有几百万条记录,其中包含姓名和电话号码列表。我需要计算有多少人与每个唯一的电话号码相关联。电话号码与重复名称和唯一名称相关联。因此,对于每个电话号码,我需要计算不同用户的数量。然后这需要映射到商店列表。我尝试选择不同的电话/不同的电话,但这只能给我一个分布的比率。例如,如果有 10 个人使用三部手机,那么我的比率告诉我 3 部手机分布在 10 个人中,但它并没有告诉我与电话相关的分布中的实际人数。任何人都可以帮助我使用 SAS 代码来获得正确的计数,我确切地知道有多少电话与同一个电话号码相关联。提前致谢。-r

4

2 回答 2

1

如果您只需要具有相同电话号码的不同行数,请使用:

proc sql;
create table phone_number_counts as
 select phonenumber, count(1) as count_users
 from dset
 group by phonenumber;
quit;

如果您想在电话号码中找出不同的姓名,即,如果 555-123-4567 John H 555-123-4567 John H 555-123-4567 Mary Y

应该导致 2,而不是 3(第一个代码将产生 3),然后使用count(distinct name)而不是count(1).

如果您想要其他内容,一些示例数据可能会有所帮助 - 即,初始数据示例和正确最终数据集示例会有所帮助。

于 2012-12-12T21:27:49.347 回答
0

我相信您正在寻找count(distinct name)

proc sql;
  create table phone_number_counts as
  select phonenumber, 
         count(*) as count_rows,
         count(distinct name) as unique_names
  from dset
  group by phonenumber;
quit;
于 2012-12-15T17:35:40.570 回答