我有一张包含分数和默认指标值的表格。 我根据降分对表进行排序,然后应用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;
但是这段代码进入了无限循环。 请帮忙。
答案 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;