emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Uwe Brauer <oub@mat.ucm.es>
To: emacs-orgmode@gnu.org
Subject: [SOLVED] (was: join two or more tables)
Date: Sun, 18 Aug 2019 10:46:43 +0200	[thread overview]
Message-ID: <87mug6q2rw.fsf_-_@mat.ucm.es> (raw)
In-Reply-To: 87tvaeq3hz.fsf@mat.ucm.es



>>> "UB" == Uwe Brauer <oub@mat.ucm.es> writes:
   >> Hi

   >> I was googling this a bit, I found more complicated scenarios, but not
   >> how to join one or more tables.

   >> For example 

   >> #+begin_src 

   >> #+tblname: nut
   >> | type     | Fiber | Sugar | Protein | Carb |
   >> |----------+-------+-------+---------+------|
   >> | eggplant |   2.5 |   3.2 |     0.8 |  8.6 |
   >> | tomatoe  |   0.6 |   2.1 |     0.8 |  3.4 |
   >> | onion    |   1.3 |   4.4 |     1.3 |  9.0 |
   >> | egg      |     0 |  18.3 |    31.9 | 18.3 |


   >> #+tblname: nut2
   >> | type     | Fiber | Sugar | Protein | Carb |
   >> |----------+-------+-------+---------+------|
   >> | rice     |   0.2 |     0 |     1.5 | 16.0 |
   >> | bread    |   0.7 |   0.7 |     3.3 | 16.0 |
   >> | orange   |   3.1 |  11.9 |     1.3 | 17.6 |
   >> | banana   |   2.1 |   9.9 |     0.9 | 18.5 |
   >> | tofu     |   0.7 |   0.5 |     6.6 |  1.4 |
   >> | nut      |   2.6 |   1.3 |     4.9 |  7.2 |
   >> | corn     |   4.7 |   1.8 |     2.8 | 21.3 |
   >> #+end_src


   >> I want to generate a new table total-nuts, which is just a combination
   >> of the two tables, nuts and nuts2 


   >> Uwe Brauer 

Best solution found in 

https://emacs.stackexchange.com/questions/48508/merge-org-tables

** Solution 1
#+NAME: T1
| col1 | col2 |
|    1 | 2    |

#+NAME: T2
| col3 |
| 3    |

#+BEGIN_SRC emacs-lisp :var t1=T1 t2=T2
(cl-mapcar #'append t1 t2)
#+END_SRC

#+RESULTS:
| col1 | col2 | col3 |
|    1 |    2 |    3 |

** Solution 2

#+NAME: T3
| col1 | col2 |
|   11 |   12 |
|   21 |   22 |
|   31 |   32 |

#+NAME: T4
| col3 |
|   13 |
|   12 |

#+BEGIN_SRC emacs-lisp :var t1=T3 t2=T4 :colnames no
(cl-mapcar #'append t1 t2)
#+END_SRC

#+RESULTS:
| col1 | col2 | col3 |
|   11 |   12 |   13 |
|   21 |   22 |   12 |



** Solution 3

#+NAME: TA
| col1 | col2 |
|------+------|
|    1 |    2 |

#+NAME: TB
| col3 |
|------|
|    3 |

#+BEGIN_SRC emacs-lisp :var t1=TA t2=TB :colnames no
(insert-at 1 (cl-mapcar #'append t1 t2) 'hline)
#+END_SRC

#+RESULTS:
| col1 | col2 | col3 |
|------+------+------|
|    1 |    2 |    3 |


#+begin_src elisp :noexport

(defun insert-at (n list element)
  "Insert ELEMENT into LIST at position N.
I.e., (eq ELEMENT (nth N (insert-at N LIST ELEMENT)))."
  (if (eq n 0)
      (cons element list)
    (let ((link (nthcdr (1- n) list)))
      (setcdr link (cons element (cdr link))))
    list))
#+end_src

  reply	other threads:[~2019-08-18  8:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-18  8:23 join two or more tables Uwe Brauer
2019-08-18  8:31 ` Uwe Brauer
2019-08-18  8:46   ` Uwe Brauer [this message]
2019-08-18  8:59     ` [rows not columns] (was: [SOLVED]) Uwe Brauer
2019-08-18 11:00   ` join two or more tables Jude DaShiell
2019-08-18 10:21 ` Ken Mankoff
2019-08-18 10:24   ` Uwe Brauer
2019-08-18 10:49     ` Achim Gratz
2019-08-18 11:34       ` Uwe Brauer
2019-08-23 18:09         ` Achim Gratz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mug6q2rw.fsf_-_@mat.ucm.es \
    --to=oub@mat.ucm.es \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).