【问题标题】:SAS how to get summary counts within the same datasetSAS如何在同一数据集中获取汇总计数
【发布时间】:2015-04-13 20:22:12
【问题描述】:

我有一个如下所示的数据集:

id,colour
12,blue
12,green
12,yellow
13,blue
14,black
15,blue
15,green

在同一个数据集中,我想知道每个 id 的计数 最终我想要做的是消除具有多个的 id

在 SQL 中,我会使用 SUM OVER() 窗口函数,或者使用每个 id 的计数自加入表

在 SAS 中最好的方法是什么?

id,colour,num
12,blue,3
12,green,3
12,yellow,3
13,blue,1
14,black,1
15,blue,2
15,green,2

排除重复ID后,我的最终结果将如下所示:

id,colour
13,blue
14,black

【问题讨论】:

    标签: count sas summary


    【解决方案1】:

    在 SAS 9.3+ 中使用 PROC SORT 通过关键变量获得一组独特的观察结果。

    proc sort data=have out=duprec nouniquekey uniqueout=want;
    by id;
    run;
    

    在 SAS SQL 中,您可以直接重新合并 - 其他版本的 SQL 不支持此功能。您可以使用 HAVING 子句进一步限制查询以直接获得最终输出。

    proc sql;
    create table want3 as
    select *
    from have
    group by id
    having count(*)=1;
    quit;
    

    【讨论】:

    • NOUNIQUEKEY 是我最喜欢的 9.3+ 新增功能之一。超级好用。
    • 听起来不错,但不幸的是我没有 9.3 我有 9.2
    • 太好了,我看到了 SQL 建议现在正在做什么——就像你说的,其他版本的 SQL 不支持它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2023-02-01
    • 2017-12-27
    • 2022-07-22
    • 2021-12-11
    相关资源
    最近更新 更多