From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Voit Subject: Re: Calculate differences of remote table numbers Date: Thu, 4 Oct 2018 09:25:48 +0200 Message-ID: <2018-10-04T09-23-01@devnull.Karl-Voit.at> References: <2018-10-01T16-59-13@devnull.Karl-Voit.at> <87d0st1v5v.fsf@alphaville.usersys.redhat.com> Reply-To: Karl Voit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g7y1Y-0007P8-AU for emacs-orgmode@gnu.org; Thu, 04 Oct 2018 03:26:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g7y1P-0003Yj-L0 for emacs-orgmode@gnu.org; Thu, 04 Oct 2018 03:26:14 -0400 Received: from [195.159.176.226] (port=40922 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g7y1O-0003Vo-KB for emacs-orgmode@gnu.org; Thu, 04 Oct 2018 03:26:06 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1g7xzB-0002dj-8D for emacs-orgmode@gnu.org; Thu, 04 Oct 2018 09:23:49 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org Hi Nick, * Nick Dokos wrote: > Karl Voit writes: > >> 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 | > > @# 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))) This is a huge step forward: #+NAME: my-table | Numbers | |---------| | 1 | | 5 | | 8 | | 12 | | 15 | | 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 | | Line | actual Reference1 | actual Reference2 | Difference | |------+-------------------+-------------------+------------| | 1 | 0 | 0 | 0 | | 2 | 5 | 5 | 0 | | 3 | 8 | 8 | 0 | | 4 | 12 | 12 | 0 | | 5 | 15 | 15 | 0 | #+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))) Somehow, the "-1" in "@@#-1$1" does not have any effect: "@@#$1" and "@@#-1$" gives the same results. Do you have any idea why? > Turning on formula debugging with `C-c {' helps. Woha! I didn't know that! And I also didn't know =C-c }= for displaying column/row numbers :-O *This* is going to be handy for me ;-) -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/