emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: evaluating rows or columns in org-table


From: Bernt Hansen
Subject: [Orgmode] Re: evaluating rows or columns in org-table
Date: Wed, 30 Jul 2008 12:12:29 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Bernt Hansen <address@hidden> writes:

> Kene Meniru <address@hidden> 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::address@hidden

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]