From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thomas S. Dye" Subject: Re: feature request: transpose a table Date: Wed, 7 Apr 2010 12:57:43 -1000 Message-ID: <21083676-E1AA-41A9-834B-4A34F635050D@tsdye.com> References: 87tyzajwav.fsf@gmail.com <4BBCE264.3000407@alumni.ethz.ch> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NzeC6-0008Ka-Nk for emacs-orgmode@gnu.org; Wed, 07 Apr 2010 18:57:58 -0400 Received: from [140.186.70.92] (port=51913 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NzeC2-0008Jx-0G for emacs-orgmode@gnu.org; Wed, 07 Apr 2010 18:57:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NzeBz-0004NP-19 for emacs-orgmode@gnu.org; Wed, 07 Apr 2010 18:57:53 -0400 Received: from oproxy1-pub.bluehost.com ([66.147.249.253]:51982 helo=outbound-mail-359.bluehost.com) by eggs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1NzeBy-0004N1-QO for emacs-orgmode@gnu.org; Wed, 07 Apr 2010 18:57:50 -0400 In-Reply-To: <4BBCE264.3000407@alumni.ethz.ch> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Michael Brand Cc: Eric S Fraga , Org Mode , zwz On Apr 7, 2010, at 9:52 AM, Michael Brand wrote: > Hi zwz, > > > I do not know if I can do org-plot on rows instead of columns. > > But today after I finished a table, I found I have to transpose the > > table by hand so that I can plot it as I want. > > Here is original table: > > | x | y | x | y | ... | > > |-----+----+----+----+-----| > > | 1 | 2 | 3 | 4 | | > > | 5 | 6 | 7 | 8 | | > > | 9 | 0 | 1 | 2 | | > > | ... | | | | | > > And I have to convert it into: > > | x | y | x | y | x | y | ... | > > |-----+---+---+---+---+---+-----| > > | 1 | 2 | 5 | 6 | 9 | 0 | | > > | 3 | 4 | 7 | 8 | 1 | 2 | | > > | ... | | | | | | | > > > > so that every two columns stand for a line. > > If someone had trouble to understand like me first, maybe looking > also at the last table below with the column groups `<>' could help. > > This use case seems quite funny and well suited to be solved with > the `field coordinates in formulas' for which I proposed a patch > some time ago that is included in org-mode now. Since org-version > 6.35 you could try this hack: > > step 1) Remove the header and use column editing from Emacs > http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html > to change your original version of the table > > | x | y | x | y | > |---+---+---+---| > | 1 | 2 | 3 | 4 | > | 5 | 6 | 7 | 8 | > | 9 | 0 | 1 | 2 | > > to this 3x2 table with Calc vectors in short notation: > > #+TBLNAME: FOO > | [1 2] | [3 4] | > | [5 6] | [7 8] | > | [9 0] | [1 2] | > > step 2) Transpose the table like described here > http://orgmode.org/worg/org-hacks.php > in the section `Transpose a table', currently with this numbering > http://orgmode.org/worg/org-hacks.php#sec-17.2.3 > to this 2x3 table with the same Calc vectors in the default notation: > > | [1, 2] | [5, 6] | [9, 0] | > | [3, 4] | [7, 8] | [1, 2] | > #+TBLFM: $1 = remote(FOO, @$#$@#) :: $2 = remote(FOO, @$#$@#) :: $3 > = remote(FOO, @$#$@#) > > step 3) query-replace `['->`', `]'->`', `,'->`|' and add the header > manually to get finally this: > > | | x | f.a(x) | x | f.b(x) | x | f.c(x) | > | / | < | > | < | > | < | > | > |---+---+--------+---+--------+---+--------| > | | 1 | 2 | 5 | 6 | 9 | 0 | > | | 3 | 4 | 7 | 8 | 1 | 2 | > > > I also wonder how do you guys draw multiple lines in one image, > since > > here there are multiple inds. > > I guess you want a xy graph something like this with three lines a, > b and c for f.a, f.b and f.c: > > f.n(x) > ^ > 08 | b > 07 | b > 06 | b > 05 | > 04 | a > 03 | a > 02 |*c > 01 | ccccc > 00 +-------cc--> x > 000000000011 > 012345678901 > > see > http://thread.gmane.org/gmane.emacs.orgmode/21979 > > I assume that this could be done also with org-babel together with R > http://en.wikipedia.org/wiki/R_%28programming_language%29 > possibly even with your original version of the table... > > - Michael Aloha all, There is also this code for transposing a table in the Library of Babel: -------- * Table/Matrix manipulation Elegant lisp code for transposing a matrix. #+tblname: transpose-example | 1 | 2 | 3 | | 4 | 5 | 6 | #+srcname: transpose #+begin_src emacs-lisp :var table=transpose-example (apply #'mapcar* #'list table) #+end_src #+resname: | 1 | 4 | | 2 | 5 | | 3 | 6 | ---------- All the best, Tom