5个tests的结果中,只有AAA,BBB,CCC 可能出现一次以上.
即有连续的 4 到 5个 A, 如 AAAA, AAAAA,或 B(BBBB,BBBBB) 或 C (CCCC,CCCCC).
其他的每种 A, B, C 组合, 如 ABC, AAB, CCA 等只能出现一次.
- data have;
- input Sub $ Test $ R $;
- cards;
- 1 1 A
- 1 2 A
- 1 3 A
- 1 4 A
- 1 5 B
- 2 1 C
- 2 2 B
- 2 3 B
- 2 4 B
- 2 5 A
- 3 1 A
- 3 2 C
- 3 3 C
- 3 4 C
- 3 5 D
- 4 1 A
- 4 2 B
- 4 3 C
- 4 4 D
- 5 1 A
- 5 2 C
- 5 3 B
- 5 4 C
- 5 5 A
- 6 1 B
- 6 2 B
- 6 3 B
- 6 4 B
- 6 5 B
- ;
- run;
- proc sort data = have;
- by sub test;
- run;
- data TopScore;
- s = 'A'; output;
- s = 'B'; output;
- s = 'C'; output;
- run;
- proc sql noprint;
- select "'"||cat(a.s,b.s, c.s)||"'" into : topABC separated by ","
- from TopScore as a, TopScore as b, TopScore as c;
- quit;
- %put '&topABC= ' &topABC;
- data want;
- set have;
- r1=lag(r);
- r2 = lag2(r);
- if test>= 3 then r3 = cat(compress(r2), compress(r1), compress(r));
- if r3 in (&topABC);
- drop r1 r2;
- run;
- proc sql;
- create table wanted as
- select distinct sub, r3, count(r3) as N
- from want
- group by sub, r3
- order by sub, r3;
- quit;
复制代码
第一条记录 sub=1, r3=AAA, N=2 说明 A 连续出现4次
最后一条记录 sub=6, r3=BBB, N=3 说明 B 连续出现5次