计算给定分段评分中的默认值频率

时间:2018-02-16 07:26:04

标签: sas

我有一张包含分数和默认指标值的表格。 我根据降分对表进行排序,然后应用proc排名来填充组列。 以下是proc rank步骤后的数据集示例。

                            Obs    Scores    Def     group

                              1      100      0        9
                              2      100      1        9
                              3       99      0        9
                              4       97      0        9
                              5       97      0        9
                              6       95      0        9
                              7       94      0        9
                              8       92      0        9
                              9       92      0        9
                             10       91      0        9
                             11       91      0        9
                             12       89      1        8
                             13       88      0        8
                             14       87      0        8
                             15       87      0        8
                             16       86      0        8
                             17       85      0        8
                             18       84      0        8
                             19       84      0        8
                             20       83      0        8
                             21       83      0        8
                             22       83      0        8
                             23       82      0        8
                             24       81      0        7
                             25       80      0        7
                             26       80      1        7

我想计算人口(即每组内的分数)。 还要计算每个组中的默认值。 我尝试了以下代码:

proc rank data = sortedScore groups = 10 out = Score_sorted_10;
    var Scores ;
    ranks Scores_group;
run;

data NumCount;
set Score_sorted_10;
Retain Popnum 0;
Retain Badnum 0;
do i=0 to 9;
if Scores_group=i
then Popnum=sum(Popnum,1);
if Scores_group=i and Def=1
then Badnum=sum(Def,1);
end;

但是这段代码进入了无限循环。 请帮忙。

1 个答案:

答案 0 :(得分:0)

我认为使用proc sql更容易。 以下查询将解决这个问题:

proc sql;
create table want as
select distinct 
    Group,
    count(scores) as Nbr_Scores,
    sum(def) as Nbr_Def
from have
group by group;
quit;