请教各位老师:能不能用循环生成下面的结果(我写的程序很繁琐)?谢谢!
想根据group变量依次求出quality(大 中 小)变量的累加和,
最终结果如下:
Obs quality group tot_number
1 大 1 489
2 小 1 136
3 中 1 718
4 大 2 355
5 小 2 10
6 中 2 319
7 大 3 1114
8 小 3 36
9 中 3 1811
data onetwo;
input number quality$;
cards;
103 大
39 大
37 中
21 中
3 大
6 大
2 中
7 中
8 中
2 大
20 大
5 中
16 大
20 中
1 中
10 中
9 中
2 中
0 大
1 中
1 中
2 中
6 大
2 中
10 中
2 中
5 大
3 中
7 大
0 大
5 大
4 中
5 大
1 大
19 中
1 中
8 中
3 大
0 大
1 大
20 中
3 小
10 中
0 大
5 大
5 中
15 大
22 大
20 大
13 中
9 中
10 中
8 中
4 中
1 中
12 中
5 大
12 中
5 中
20 大
31 中
1 小
10 小
4 中
2 大
8 中
3 大
4 大
1 大
11 大
1 大
1 大
5 中
8 中
4 中
2 大
3 中
10 中
5 中
10 中
1 大
0 中
2 小
5 中
10 大
3 中
1 中
5 中
14 中
10 大
1 中
3 中
5 中
6 中
7 中
3 中
4 中
0 中
4 中
3 中
10 中
27 中
1 中
3 中
10 中
2 中
2 中
25 中
2 小
3 中
20 中
3 中
2 中
2 大
3 中
17 大
22 中
7 中
10 大
2 中
5 中
10 中
4 大
13 中
16 大
3 中
6 中
3 小
5 中
9 小
1 小
3 大
2 中
1 中
3 中
3 大
3 中
4 小
3 中
80 大
9 小
4 中
1 中
3 小
2 小
10 中
6 大
1 中
8 大
1 中
1 大
0 小
1 大
5 大
16 中
1 中
1 中
13 中
3 大
20 中
5 大
36 大
3 中
14 中
3 中
5 小
1 中
6 中
3 大
12 大
35 大
2 中
4 中
10 大
15 中
3 大
7 中
8 中
3 大
2 中
1 中
36 中
23 大
0 中
2 中
8 中
5 中
4 中
1 中
6 中
4 大
5 中
5 中
4 中
10 大
8 大
4 中
4 中
2 中
3 大
4 中
10 大
4 小
11 大
4 中
3 中
3 中
3 中
3 中
3 中
1 中
3 中
3 大
2 中
3 中
6 小
8 中
10 中
2 小
1 大
2 大
6 中
10 大
5 中
1 大
16 大
3 中
1 大
6 大
6 中
3 大
2 中
3 大
0 中
10 大
1 大
4 大
15 大
3 大
5 大
10 大
0 大
3 中
30 中
1 大
3 中
2 中
1 大
4 中
1 大
7 中
2 大
10 大
3 大
3 中
4 大
6 大
20 大
2 小
5 中
6 中
20 大
4 大
1 大
4 中
0 中
0 中
4 大
1 中
3 大
9 大
8 中
1 中
1 大
9 中
12 中
2 中
5 中
2 中
20 小
20 中
1 大
4 中
2 小
201 大
1 大
8 中
1 中
1 中
1 大
1 中
4 中
2 中
8 小
10 中
5 大
7 大
1 大
1 中
100 中
1 大
17 中
2 大
12 中
17 大
2 小
2 中
5 大
1 大
1 大
6 大
2 中
8 小
18 大
12 大
2 大
2 大
63 大
18 中
20 大
15 大
10 大
3 中
9 大
5 大
3 中
2 小
2 大
5 中
1 中
2 中
3 中
3 中
6 小
2 中
6 大
1 中
12 大
2 中
1 大
2 大
6 中
2 大
1 大
4 大
1 大
3 大
4 大
3 中
2 小
12 中
5 大
4 中
4 大
2 大
2 大
2 中
1 大
10 大
1 大
22 中
17 大
11 大
3 大
1 大
151 中
3 中
100 中
8 中
2 中
2 大
5 中
1 大
16 大
1 大
10 大
9 中
4 大
7 中
2 小
1 中
3 中
11 大
1 大
3 中
2 大
1 大
9 中
2 大
1 中
4 小
2 大
8 中
2 中
17 中
3 中
1 中
6 大
1 大
3 大
5 中
1 大
6 小
1 大
10 中
20 大
11 中
2 中
4 大
5 大
51 中
7 大
1 大
2 大
20 中
79 中
3 大
50 中
9 小
4 中
8 中
17 大
15 中
4 中
1 大
3 中
105 中
10 中
4 大
18 大
5 大
4 中
2 中
0 中
0 中
47 大
6 大
9 中
3 中
3 中
36 中
4 中
5 大
9 大
2 中
112 中
3 中
10 大
1 中
1 大
5 小
30 中
5 中
4 大
20 大
3 中
2 中
8 大
3 中
30 中
1 中
14 大
1 中
9 中
2 中
6 中
76 中
32 中
11 中
1 中
30 中
32 中
29 中
5 大
1 大
2 大
4 中
2 中
5 小
42 大
2 大
2 大
5 大
7 中
29 大
6 中
18 大
3 大
1 大
12 大
44 中
1 大
7 大
10 大
12 大
2 中
5 大
65 中
21 中
48 大
8 中
5 大
3 大
3 中
41 中
1 中
9 小
8 小
11 大
9 大
0 中
8 大
11 大
6 大
4 中
23 中
8 大
10 大
37 中
1 大
16 中
8 大
2 大
5 大
16 小
10 大
1 中
63 中
5 大
;
run;
data b;
set onetwo;
if number<10 then group=1;
if 10<=number<=15 then group=2;
if number>15 then group=3;
run;
proc freq data=b;
tables group*quality;run;
proc sort data=b;
by quality;run;
data d;
set b;
if group=1;
proc sort data=d;
by quality;
data d1;
set d;
by quality;
if first.quality then tot_number=0;
tot_number+number;
drop number;
if last.quality then output;run;
data e;
set b;
if group=2;
proc sort data=e;
by quality;
data e1;
set e;
by quality;
if first.quality then tot_number=0;
tot_number+number;
drop number;
if last.quality then output;run;
data f;
set b;
if group=3;
proc sort data=f;
by quality;
data f1;
set f;
by quality;
if first.quality then tot_number=0;
tot_number+number;
drop number;
if last.quality then output;run;
data total;
set d1 e1 f1;
run;