- /*INPUT*/
- data StudentScore;
- input StudentID $ Year Score;
- datalines;
- A 91 400
- A 92 398
- A 92 399
- B 91 430
- B 92 432
- B 93 444
- B 94 446
- C 91 455
- C 92 423
- C 93 411
- C 94 415
- C 95 427
- C 95 418
- ;
- run;
- /*Q1*/
- data StudentScore;
- set StudentScore;
- by StudentID;
- retain Score_lag;
- if Score>=Score_lag then inorde='1';
- else inorde='0';
- if first.StudentID then inorde='0';
- Score_lag=Score;
- drop Score_lag;
- run;
- /*Q2*/
- proc sort data=StudentScore out=StudentScore2;
- by StudentID descending year descending Score;
- run;quit;
- data StudentScore2;
- set StudentScore2;
- by StudentID descending year descending Score;
- if first.StudentID;
- keep StudentID Score;
- run;
- /*Q3*/
- proc sql;
- create table StudentScore2 as
- select
- a.*
- ,max(b.score) as HighScore
- ,avg(b.score) as AvgScore
- from StudentScore2 a
- inner join StudentScore b
- on a.StudentID=b.StudentID
- group by
- a.StudentId
- ,a.Score
- ;
- quit;


雷达卡


京公网安备 11010802022788号







