From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bernt Hansen Subject: Re: evaluating rows or columns in org-table Date: Wed, 30 Jul 2008 12:12:29 -0400 Message-ID: <87d4kvqrki.fsf@gollum.intra.norang.ca> References: <489075C5.807@gmail.com> <87od4fqtxp.fsf@gollum.intra.norang.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KOEHz-0005J0-O9 for emacs-orgmode@gnu.org; Wed, 30 Jul 2008 12:12:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KOEHy-0005IF-Iy for emacs-orgmode@gnu.org; Wed, 30 Jul 2008 12:12:35 -0400 Received: from [199.232.76.173] (port=59757 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KOEHy-0005I8-CW for emacs-orgmode@gnu.org; Wed, 30 Jul 2008 12:12:34 -0400 Received: from mho-02-bos.mailhop.org ([63.208.196.179]:50139) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KOEHx-000065-R6 for emacs-orgmode@gnu.org; Wed, 30 Jul 2008 12:12:34 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Kene Meniru Cc: emacs-orgmode@gnu.org Bernt Hansen writes: > Kene Meniru 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::$2=@-1+1 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