From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: table formula help...
Date: Sun, 07 Dec 2014 11:25:34 +0800 [thread overview]
Message-ID: <8761do6t01.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 54838805.8090705@free.fr
[-- Attachment #1: Type: text/plain, Size: 2305 bytes --]
Thierry Banel <tbanelwebmin@free.fr> writes:
> To elaborate on Michael's first suggestion,
> we will first give a name ("work") to the table:
>
> #+TBLNAME: work
> | Chars | Lines | Translator |
>
> |-------+-------+-----------------|
> | | 84 | Austin Woerner |
> | 6633 | | Eric Abrahamsen |
> | 16984 | | Canaan Morse |
> | | 24 | Lucas Klein |
> | | 10 | Lucas Klein |
>
> Then typing C-c C-x i and answering the wizard questions,
> we get a new table as follow:
>
> #+BEGIN: aggregate :table "work" :cols "Translator sum(Chars) sum(Lines)"
> | Translator | sum(Chars) | sum(Lines) |
>
> |-----------------+------------+------------|
> | Austin Woerner | NA | 84 |
> | Eric Abrahamsen | 6633 | NA |
> | Canaan Morse | 16984 | NA |
> | Lucas Klein | 2 NA | 34 |
> #+END:
>
> Whenever you change the "work" table,
> you can easily refresh the aggregated table by typing C-c C-c
>
> To install the orgtbl-aggregate module,
> add those lines to your .emacs:
>
> (require 'package)
> (add-to-list 'package-archives '("melpa" .
> "http://melpa.milkbox.net/packages/") t)
> (package-initialize)
>
> Then type M-x package-list-packages
> and install orgtbl-aggregate
>
> Have fun
> Thierry
Okay, having fun! This seems like exactly what I was after. A couple of
things:
I've attached a patch replacing some [a-z] regexps with [:word:], so
that column names can be written in scripts other than ascii (my tables
above are actually all in Chinese). I hope that's acceptable.
I've changed blank fields to "0" so that I don't get the "NA" strings.
Now I'd like to do more calculations based on the rows in the sum(Chars)
and sum(Lines) columns.
Ideally I could add a fourth column to the aggregate table, calculated
from rows in the previous two. Is there any way to make a column
specification that refers to columns in the same table? The fourth
column would be defined as:
(sum(prod($2 0.7) prod($3 10))
Where $2 and $3 refer to cells in the aggregated table.
I made that up -- I don't even know if it's valid calc syntax. But
that's the idea. Or perhaps I should be making a third table based on
this second one?
Thanks again!
Eric
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Modify-regexps-to-find-word-instead-of-a-zA-Z.patch --]
[-- Type: text/x-diff, Size: 1686 bytes --]
From a5e50914e431420a39e544b3a05b72169828e269 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Sun, 7 Dec 2014 10:56:04 +0800
Subject: [PATCH] Modify regexps to find [:word:] instead of a-zA-Z
* orgtbl-aggregate.el (orgtbl-to-aggregated-table-parse-spec): Allow
column names in scripts other than ASCII.
---
orgtbl-aggregate.el | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/orgtbl-aggregate.el b/orgtbl-aggregate.el
index b228545..af8fc12 100644
--- a/orgtbl-aggregate.el
+++ b/orgtbl-aggregate.el
@@ -273,7 +273,7 @@ or 0 for the special 'hline column."
(cond
((string-match "^count()$" column)
'count)
- ((string-match "^\\([a-z]+\\)(\\([a-zA-Z0-9_$]+\\))$" column)
+ ((string-match "^\\([[:word:]]+\\)(\\([[:word:]0-9_$]+\\))$" column)
(setq id (intern (match-string 1 column)))
(unless (memq id validid1)
(error
@@ -285,7 +285,7 @@ or 0 for the special 'hline column."
table
t)))
((string-match
- "^\\([a-z]+\\)(\\([a-zA-Z0-9_$]+\\)[*,]\\([a-zA-Z0-9_$]+\\))$"
+ "^\\([[:word:]]+\\)(\\([[:word:]0-9_$]+\\)[*,]\\([[:word:]0-9_$]+\\))$"
column)
(setq id (intern (match-string 1 column)))
(unless (memq id validid2)
@@ -297,7 +297,7 @@ or 0 for the special 'hline column."
(list id
(orgtbl-to-aggregated-table-colname-to-int a table t)
(orgtbl-to-aggregated-table-colname-to-int b table t))))
- ((string-match "^\\([a-zA-Z0-9_$]+\\)$" column)
+ ((string-match "^\\([[:word:]0-9_$]+\\)$" column)
(orgtbl-to-aggregated-table-colname-to-int
(match-string 1 column)
table
--
2.1.3
next prev parent reply other threads:[~2014-12-07 3:20 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-06 5:42 table formula help Eric Abrahamsen
2014-12-06 7:37 ` Thomas S. Dye
2014-12-06 8:05 ` Michael Brand
2014-12-06 8:32 ` Eric Abrahamsen
2014-12-06 22:49 ` Thierry Banel
2014-12-07 2:05 ` Eric Abrahamsen
2014-12-07 3:25 ` Eric Abrahamsen [this message]
2014-12-07 9:20 ` Thierry Banel
2014-12-07 9:40 ` Michael Brand
2014-12-07 10:02 ` Thierry Banel
2014-12-07 10:26 ` Michael Brand
2014-12-07 14:51 ` Thierry Banel
2014-12-07 16:13 ` Thierry Banel
2014-12-07 16:48 ` Michael Brand
2014-12-08 21:12 ` Thierry Banel
2014-12-08 22:32 ` Thierry Banel
2014-12-10 21:08 ` Michael Brand
2014-12-08 3:52 ` Eric Abrahamsen
2014-12-07 9:39 ` Michael Brand
2014-12-07 9:55 ` Thierry Banel
2014-12-07 21:57 ` Thierry Banel
2014-12-08 18:02 ` Michael Brand
2014-12-08 21:57 ` Thierry Banel
2014-12-09 5:54 ` Michael Brand
2014-12-09 18:12 ` Thierry Banel
2014-12-09 19:01 ` Thierry Banel
2014-12-09 22:35 ` Thierry Banel
2014-12-10 21:06 ` Michael Brand
2014-12-10 22:55 ` Thierry Banel
2014-12-12 17:15 ` Michael Brand
2014-12-12 21:04 ` Thierry Banel
2014-12-13 18:27 ` Michael Brand
2015-01-25 22:21 ` Thierry Banel
2015-01-26 2:48 ` Eric Abrahamsen
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=8761do6t01.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--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).