计数子组Proc SQL的频率

时间:2014-07-09 13:52:27

标签: sql sas

我试图找到一种方法来为没有不同标识符的子组的行选择频率计数(好吧,我猜不同的标识符是状态的组合)。考虑样本数据:

data have;
    input Series $ Game Name $ Points;
datalines;
A 1 LeBron 2
A 1 LeBron 3
A 1 LeBron 2
A 1 LeBron 2
A 2 LeBron 2
A 2 LeBron 2
A 2 LeBron 3
A 3 LeBron 2
;
run;

这里的每一行都是勒布朗在系列赛中进行的一次射门。我想要系列/游戏摘要,并计算拍摄数量。像这样:

Series Game Name     Freq Sum 2pt 3pt
A      1    LeBron   4    9   3   1
A      2    LeBron   3    7   2   1
A      3    LeBron   1    2   1   0

我必须在这里使用Proc SQL,而不是proc意味着因为我从多个表中提取数据。此外,我将有几千个"系列"以及更多"游戏"和"姓名"所以请保持回答一般这是我的拥有:

proc sql;
    create table want as
    select Series,
                Game,
                Name,
                sum(points) as totalpoints
    from have
    group by 1,2,3;
run;

感谢。

PYLL

1 个答案:

答案 0 :(得分:1)

没有特别的理由你不能使用PROC MEANS从多个表中提取 - 你总是可以创建一个视图(在SQL或数据步骤中)。但无论如何,

proc sql;
    create table want as
    select Series,
                Game,
                Name,
                sum(points) as totalpoints,
                count(points) as numbershotsmade
    from have
    group by 1,2,3;
run;

你也可以使用同样的n函数。

count(points)将计算非零点值;即使点为空,count(1)也会计算总行数。