[Top][All Lists]
[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