emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Calculate differences of remote table numbers


From: Nick Dokos
Subject: Re: [O] Calculate differences of remote table numbers
Date: Mon, 01 Oct 2018 12:36:12 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Karl Voit <address@hidden> writes:

> Hi!
>
> I'd like to calculate the differences between rows of numbers of a
> different table.
>
> Here is a minimal example showing the issue:
>
>     #+NAME: my-table
>     | Numbers |
>
>     |---------|
>     |       1 |
>     |       5 |
>     |       8 |
>     |      12 |
>     |      15 |
>
> This is what I expected: "exp. Reference1" and "exp. Reference2" is here only
> to demonstrate that the assumed references are wrong in the third table. "exp.
> Difference" is the column I want to get in the first place. I don't want to 
> see
> Reference 1 or 2 at all in my solution (since I need a couple of those
> difference-columns).
>
>     | Line | exp. Reference1 | exp. Reference2 | exp. Difference |
>     |------+-----------------+-----------------+-----------------|
>     |    1 |               0 |               0 |               0 |
>     |    2 |               5 |               1 |               4 |
>     |    3 |               8 |               5 |               3 |
>     |    4 |              12 |               8 |               4 |
>     |    5 |              15 |              12 |               3 |
>
> This is what I get instead:
>
>     | Line | actual Reference1 | actual Reference2 | Difference |
>     |------+-------------------+-------------------+------------|
>     |    1 |                 0 |                 0 |          0 |
>     |    2 |                 6 |                 1 |          5 |
>     |    3 |                12 |                 1 |         11 |
>     |    4 |                20 |                 1 |         19 |
>     |    5 |                30 |                 1 |         29 |
>
>     #+TBLFM: $2=if(2 == @#, 0, remote(my-table,@#$1))::$3=if(2 == @#, 0, 
> remote(my-table,@#-1$1))::$4=if(2 == @#, 0, 
> (remote(my-table,@#$1)-remote(my-table,@#-1$1)))

@# is the row number, so to refer to that row, you need @@#. Something like 
this,
although I didn't test to see if everything gets parsed correctly:

#+TBLFM: $2=if(2 == @#, 0, remote(my-table,@@#$1))::$3=if(2 == @#, 0, 
remote(my-table,@@#-1$1))::$4=if(2 == @#, 0, 
(remote(my-table,@@#$1)-remote(my-table,@@#-1$1)))

Turning on formula debugging with `C-c {' helps.

-- 
Nick

"There are only two hard problems in computer science: cache
invalidation, naming things, and off-by-one errors." -Martin Fowler




reply via email to

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