emacs-orgmode
[Top][All Lists]
Advanced

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

table formula, empty field, duration


From: Kristof Ralovich
Subject: table formula, empty field, duration
Date: Thu, 06 Aug 2020 08:24:23 +0200
User-agent: Evolution 3.36.3-0ubuntu1

Dear All,

it appears to me that the concept of "empty field" is not defined for
time durations, or it is quite different to how it is defined for
numbers (using org-mode 9.1.9).

In the first table, the empty row @6 produces an empty field for the sum
($5, first formula), that vmean is able to "skip" (second formula) and
gives the expected result 8.25 (=33/4).

#+TBLNAME: works_with_numbers
| h | start | end | h | sum |    h | h |
|---+-------+-----+---+-----+------+---|
|   |    08 |  18 |   |  10 |      |   |
|   |    11 |  15 |   |   4 |      |   |
|   |    09 |  20 |   |  11 |      |   |
|   |    10 |  18 |   |   8 |      |   |
|   |       |     |   |     |      |   |
|---+-------+-----+---+-----+------+---|
|   |       |     |   |  33 | 8.25 |   |
#+TBLFM: $5=if(typeof($3-$2)==12, string(""), $3-$2);E::@>$5=vsum(@2..@-1);
#+TBLFM: @>$6=vmean(@2$5..@-1$5);

However, in the second table, if time durations are used, how can
an empty field be represented? For an empty row @6 the current
first formula always computes 00:00 as opposed to an empty field.
Unfortunately, later, vmean includes 00:00 in the computation,
instead of skipping it. That is why the second formula produces 06:29,
instead of 08:06 for @>$6. Is there a way to force the first formula
to produce a truly empty field? Or is there a way to tell vmean to
skip 00:00 durations?

#+TBLNAME: does_not_work_with_duration
| h | start |   end | h |   sum |     h | h |
|---+-------+-------+---+-------+-------+---|
|   | 08:54 | 18:01 |   | 09:07 |       |   |
|   | 11:45 | 15:50 |   | 04:05 |       |   |
|   | 09:20 | 20:23 |   | 11:03 |       |   |
|   | 10:25 | 18:37 |   | 08:12 |       |   |
|   |       |       |   | 00:00 |       |   |
|---+-------+-------+---+-------+-------+---|
|   |       |       |   | 32:27 | 06:29 |   |
#+TBLFM: $5=if(typeof($3-$2)==12, string(""), $3-$2);EU::@>$5=vsum(@2..@-1);U
#+TBLFM: @>$6=vmean(@2$5..@-1$5);U

Thank you for your help!

Kristof




reply via email to

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