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
next prev parent 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).