count - SAS如何获取同一数据集中的汇总计数

标签 count sas summary

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

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

最佳答案

使用 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;

关于count - SAS如何获取同一数据集中的汇总计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614373/

相关文章:

python - SELECT COUNT(distinct CASE WHEN x > y THEN seller_id ELSE NULL END) FROM 表 GROUP BY 列 PANDAS 等效项

MySQL - Count() 并将结果乘以 400

stored-procedures - 如何在不使用 ProcSQL 的情况下在 SAS 中调用存储过程?

RegEx - 提取特定短语之间的字符

java - 如何在 Java 中向 Prometheus Summary 指标添加标签

python - Pandas模糊组汇总统计

mysql:获取两个日期时间之间的记录数

MySQL Double count 左连接

sas - SAS 中的日期错误

java - 您可以扩展 IntSummaryStatistics 类吗?