;calculate points and grades for students in Psych 30C 1999 (data :use p30pts :variables '(attend hmwk1 hmwk2 hmwk3 hmwk4 hmwk5 hmwk6 homework midterm1 midterm2 advtop exams total grade) :types (combine (repeat "numeric" 13) "category") :program (let* ((attend (+ a7-1 a2-2 a4-2 a9-2 a11-2 a16-2 a18-2 a23-2 a25-2 a2-3 a4-3 a16-3 a18-3 a23-3 a25-3 a29-3 a1-4 a6-4 a8-4)) (hmwk1 (* 5/10 r1)) (hmwk2 (+ (* 6/10 r2a) (* 4/10 r2b))) (hmwk3 (+ (* 7/10 r3abd) (* 3/10 r3c))) (hmwk4 (* 15/10 r4)) (hmwk5 (* 15/10 r5)) (hmwk6 hwk6) (homework (+ hmwk1 hmwk2 hmwk3 hmwk4 hmwk5 hmwk6)) (midterm2 (+ m2abc m2d)) (advtop (repeat 0 (length hmwk1))) (exams (+ m1 midterm2 advtop)) (total (+ homework m1 midterm2 attend)) (grade (mapcar #'(lambda (total) (cond ((> total 220) "A") ((< 180 total 220) "B") ((< 150 total 180) "C") ((< total 150) "D"))) total)) ) (list attend hmwk1 hmwk2 hmwk3 hmwk4 hmwk5 hmwk6 homework m1 midterm2 advtop exams total grade) )) ;Create a second data object with only major point sources (data :use *current-data* :variables '(homework exams total grade) :types (combine (repeat "numeric" 3) "category") :program (list homework exams total grade) ) ;Sort into order by point total (sort-permute :variable "total" :descending t)