emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Thierry Banel <tbanelwebmin@free.fr>
To: emacs-orgmode@gnu.org
Subject: Re: very long table calc expressions ?
Date: Wed, 20 Jun 2018 20:28:04 +0200	[thread overview]
Message-ID: <5B2A9CB4.7090702@free.fr> (raw)
In-Reply-To: <87fu1h25a8.fsf@mat.ucm.es>

Le 20/06/2018 11:09, Uwe Brauer a écrit :
>     > Le 19/06/2018 19:21, Uwe Brauer a écrit :
>
>     > You may want to take a look at the orgtbl-aggregate package available on
>     > Melpa.
>
>
>
> Thanks very much. I have already installed that package but the example
> presented in the documentation were too sophisticated for my purpose. May
> I suggest to include this example in the documentation, because your
> package is a real time saver!!
>
I included such an example (and added your name to the contributors list).

> I take the opportunity to ask whether your package can also easily
> deal with the following problem (which is very important to me and
> drives my crazy)
Not easily. orgaggregate groups rows using equality, whereas you need to 
group rows based on intervals (between 5 and 6.9 for example).

But you can prepare the data table with a new, computed column, telling 
in which interval each value falls:

#+TBLNAME: raw-data
| Test | Interval |
|------+----------|
|    0 | SS       |
|    1 | SS       |
|    2 | SS       |
|    3 | SS       |
|    4 | SS       |
|    5 | AP       |
|    6 | AP       |
|    7 | NT       |
|    8 | NT       |
|    9 | SB       |
|      | NP       |
|      | NP       |
|      | NP       |
#+TBLFM: $2= "nan"="$1" ? string("NP") : 0<=$1 && $1<=4.9 ? string("SS") 
: 5<=$1 && $1<=6.9 ? string("AP") : 7<=$1 && $1<=8.9 ? string("NT") : 
9<=$1 && $1<=10  ? string("SB") : string("OTHER");E

And then orgaggregate can handle it:

#+BEGIN: aggregate :table "raw-data" :cols "Interval count()"
| Interval | count() |
|----------+---------|
| SS       |       5 |
| AP       |       2 |
| NT       |       2 |
| SB       |       1 |
| NP       |       3 |
#+END:

>
> #+TBLFM: $4='(length (org-lookup-all '($2 $3) '(remote(raw-data,@2$1..@>$1)) nil 'in-interval));N
>
>
> However that function can not deal with empty strings (I could replace
> the empty string by some string but then the function does not
> distinguish between the string and 0). So I want that the entry NP
> represents the counts of the empty strings: there are three in that column.
>
> So can your package deal with this situation?
>
> Thanks again
>
> Uwe Brauer
>
I don't have a solution out of my hat. But I guess the problem you face 
may originate from the remote() function. It filters out empty values. 
However you can change this behavior using the ;E modifier.

| [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
#+TBLFM: $1=remote(raw-data,@2$1..@>$1)

| [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, nan, nan, nan] |
#+TBLFM: $1=remote(raw-data,@2$1..@>$1);E

Regards
Thierry

  reply	other threads:[~2018-06-20 18:28 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-19 17:21 very long table calc expressions ? Uwe Brauer
2018-06-20  6:13 ` Thierry Banel
2018-06-20  9:09   ` Uwe Brauer
2018-06-20 18:28     ` Thierry Banel [this message]
2018-06-21 13:35       ` Uwe Brauer
2018-06-21 19:06 ` Bernt Hansen
2018-06-22 10:28   ` Uwe Brauer
2018-06-22 13:16     ` Bernt Hansen
2018-06-22 14:16       ` Uwe Brauer
2018-06-22 15:03         ` Jonathan Leech-Pepin
2018-06-22 15:25           ` Uwe Brauer
2018-06-22 16:48             ` Nick Dokos
2018-06-22 17:22               ` Thierry Banel
2018-06-22 17:54                 ` Uwe Brauer

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=5B2A9CB4.7090702@free.fr \
    --to=tbanelwebmin@free.fr \
    --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).