Bernt Hansen <[EMAIL PROTECTED]> writes: > Kene Meniru <[EMAIL PROTECTED]> writes: > >> | | | names | grade 1 | grade 2 | grade 3 | Total | | >> Letter grade | >> >> |---+---+------------+---------+---------+---------+-------+---+--------------| >> | # | 1 | student 01 | 91.80 | 96.40 | 97.00 | 95.07 | 1 | C >> | >> | # | 2 | student 02 | 88.78 | 89.15 | 98.00 | 91.98 | 2 | B >> | >> | # | 3 | student 03 | 92.00 | 95.14 | 97.00 | 94.71 | 3 | B >> | >> | # | 4 | student 04 | 84.00 | 74.62 | 88.00 | 82.21 | 4 | B >> | >> #+TBLFM: $7=($4+$5+$6)/3;%.2f >> >> Sample letter grade calculation: >> 90-100 = A >> 80-89 = B >> 70-79 = C >> 60-69 = D >> 0-59 = F >> >> I am deeply sorry if this has been addressed before here. I have >> searched but could not find any reference. >> I am a teacher and have been using org-mode in combination with noweb >> as a class manager. I also use moodle and blackboard but I like to >> keep my lecture notes and student grades local on my machine. I >> typically have the above table for student grades (usually >> substantially more than that). I am able to calculate many things like >> averages, etc., but would like to have letter grades and "best >> performing" comments by the students doing as well. >> >> Starting with letter grades, is there a way I can evaluate the Total >> column and assign letter grades as shown above? Thanks > > It's a bit ugly but I think it works... > > | | | names | grade 1 | grade 2 | grade 3 | Total | | Letter grade > | > |---+---+------------+---------+---------+---------+-------+---+--------------| > | # | 1 | student 01 | 91.80 | 96.40 | 97.00 | 95.07 | 1 | A > | > | | | | | | | | | > | > | # | 2 | student 02 | 88.78 | 89.15 | 98.00 | 91.98 | 2 | A > | > | | | | | | | | | > | > | # | 3 | student 03 | 92.00 | 95.14 | 97.00 | 94.71 | 3 | A > | > | | | | | | | | | > | > | # | 4 | student 04 | 84.00 | 74.62 | 88.00 | 82.21 | 4 | B > | > | | | | | | | | | > | > #+TBLFM: > $7=($4+$5+$6)/3;%.2f::$9=if($7<60,string("F"),if($7<70,string("D"),if($7<80,string("C"),if($7<90,string("B"),string("A"))))) > > There might be a better/cleaner way to do this. > > This also seems to work: > > #+TBLFM: > $7=($4+$5+$6)/3;%.2f::$9=if($7<60,F,if($7<70,D,if($7<80,C,if($7<90,B,A))))
Here's my attempt at fixing the student rank | | Rank | names | grade 1 | grade 2 | grade 3 | Total | Letter grade | |---+------+------------+---------+---------+---------+-------+--------------| | # | 1 | student 01 | 91.80 | 96.40 | 97.00 | 95.07 | A | | # | 3 | student 03 | 92.00 | 95.14 | 97.00 | 94.71 | A | | # | 2 | student 02 | 88.78 | 89.15 | 98.00 | 91.98 | A | | # | 4 | student 04 | 84.00 | 74.62 | 88.00 | 82.21 | B | #+TBLFM: $7=($4+$5+$6)/3;%.2f::$8=if($7<60,F,if($7<70,D,if($7<80,C,if($7<90,B,A))))::@2$2=1::[EMAIL PROTECTED] If you sort the table by the total column descending to get the rank If you sort the resulting table like this: 1) Position cursor on any total value 2) M-x org-table-sort-lines 3) N (for reverse numeric sort) Then you need to set the ranking data sequentially starting from 1 on row 1. So... the final table looks like this: -Bernt _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode