[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