Hi Nicolas,

On Oct 1, 2008, at 6:46 PM, Nicolas Goaziou wrote:

Carsten Dominik <[EMAIL PROTECTED]> writes:

Hello,

Hi Nicolas, there s no builtin way to deal with this, in particular
with the fact that you want to treat empty fields as non-existing, and
therefore also to ignore the corresponding weight.

You cou write a Lisp function to do this, though:

(defun my-wmean (values weights)
 (let ((vsum 0) (wsum 0))
   (while (and values weights)
     (setq v (pop values) w (pop weights))
     (unless (equal "" v)
        (setq vsum (+ vsum (* (string-to-number w) (string-to-number
v)))
              wsum (+ wsum (string-to-number w)))))
   (/ vsum wsum)))

Well, thank you very much: it does the job.

I don't want to be picky but I'll investigate on a way to have an empty string instead of a sorry 0 whenever a student hasn't sat for any exam.

Well, you can do this by leaving the formatting to the function instead of the formula under the table:


(defun my-wmean (values weights)
 (let ((vsum 0) (wsum 0))
   (while (and values weights)
     (setq v (pop values) w (pop weights))
     (unless (equal "" v)
        (setq vsum (+ vsum (* (string-to-number w) (string-to-number v)))
              wsum (+ wsum (string-to-number w)))))
   (if (= vsum 0) "" (format "%.1f" (/ vsum wsum)))))


The you could use this as your equation:

|           | Coeff. |    0.2 |    0.5 |      1 |
|-----------+--------+--------+--------+--------|
| Name      |        | Test 1 | Test 2 | Test 3 |
|-----------+--------+--------+--------+--------|
| Student A |   10.0 |     15 |     12 |      8 |
| Student B |   12.7 |        |     16 |     11 |
| Student C |        |        |        |        |
#+TBLFM: $2='(my-wmean '($3..$5) '(@[EMAIL PROTECTED]));E


Finally, I wondered if it would be useful to make it built-in as
weighted means are somewhat popular in education.

Well, I could do that, of course. But which version of this function? What ouput etc? I guess this would then be the original version, which returns a number, and which returns 0 if the student has done absolutely nothing....

- Carsten



_______________________________________________
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

Reply via email to