Sas 使用proc sql汇总并计算数据集中特定的项
我的数据集和尝试Sas 使用proc sql汇总并计算数据集中特定的项,sas,Sas,我的数据集和尝试 data mydata; input Category $ Item $; datalines; A 1 A 1 A 2 B 3 B 1 ; proc sql; create table mytable as select *, count(Category) as Total_No_in_Category, count(Category)-count(item, "3") as No_of_not_3_in_the_same_category
data mydata;
input Category $ Item $;
datalines;
A 1
A 1
A 2
B 3
B 1
;
proc sql;
create table mytable as
select *, count(Category) as Total_No_in_Category, count(Category)-count(item, "3") as No_of_not_3_in_the_same_category from mydata
group by Category;
run;
结果
Category No_of_not_3_in_the_same_category Total_No_in_Category
A 3 3
A 3 3
A 3 3
B 2 2
B 2 1
我的预期结果
Category No_of_not_3_in_the_same_ category Total_No_in_Category
A 2 3
B 1 2
我想知道如何仅使用proc-SQL来实现预期的结果。非常感谢。两个参数
COUNT(项,“3”)
函数调用不是摘要函数。这将导致原始表中的所有行自动与聚合计算(那些count()
)重新合并。重新合并是SASProc SQL
的专有功能,不是ANSI SQL标准的一部分
您似乎想要唯一的非3项值的数量,因此需要
COUNT(DISTINCT ...expression...)
在查询中。…表达式…
可以是一个case
子句,通过不包含case
子句的else
部分,将item=“3”
转换为null值
例如:
create table want as
select
category
, count(*) as freq
, count(distinct case when item ne "3" then item end) as n_unq_item_not_3
from mydata
group by category
;