SAS如何在同一数据集中获取汇总计数
SAS how to get summary counts within the same dataset
我的数据集如下所示:
id,colour
12,blue
12,green
12,yellow
13,blue
14,black
15,blue
15,green
在同一个数据集中我想要每个id的计数
最终我想要做的是消除具有多个 ids
在 SQL 中,我会使用 SUM OVER() 窗口函数,或者自己加入 table 和每个 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;
我的数据集如下所示:
id,colour
12,blue
12,green
12,yellow
13,blue
14,black
15,blue
15,green
在同一个数据集中我想要每个id的计数 最终我想要做的是消除具有多个 ids
在 SQL 中,我会使用 SUM OVER() 窗口函数,或者自己加入 table 和每个 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;