From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Calculate differences of remote table numbers Date: Mon, 01 Oct 2018 12:36:12 -0400 Message-ID: <87d0st1v5v.fsf@alphaville.usersys.redhat.com> References: <2018-10-01T16-59-13@devnull.Karl-Voit.at> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46382) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g71BI-0001CP-Md for emacs-orgmode@gnu.org; Mon, 01 Oct 2018 12:36:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g71BF-0000Lb-FK for emacs-orgmode@gnu.org; Mon, 01 Oct 2018 12:36:24 -0400 Received: from [195.159.176.226] (port=33238 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g71BF-0000Jn-6f for emacs-orgmode@gnu.org; Mon, 01 Oct 2018 12:36:21 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1g7195-0007nD-Fe for emacs-orgmode@gnu.org; Mon, 01 Oct 2018 18:34:07 +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 Karl Voit 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