emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* org-table-duplicate-column
@ 2013-09-29  8:35 Karl Voit
  2013-09-29  9:42 ` org-table-duplicate-column Michael Brand
  0 siblings, 1 reply; 9+ messages in thread
From: Karl Voit @ 2013-09-29  8:35 UTC (permalink / raw)
  To: emacs-orgmode

Hi!

I often end up creating a table where I do the header and the outer
leftmost column. Then I start by creating the second column with
formulas. In many cases, the following columns are like the previous
one but with, e.g., $3 instead of $2 in all formulas.

Either there is another solution to my work-flow or
org-table-duplicate-column would be a cool new feature :-)

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-29  8:35 org-table-duplicate-column Karl Voit
@ 2013-09-29  9:42 ` Michael Brand
  2013-09-29 19:56   ` org-table-duplicate-column Karl Voit
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Brand @ 2013-09-29  9:42 UTC (permalink / raw)
  To: news1142; +Cc: Org Mode

Hi Karl

On Sun, Sep 29, 2013 at 10:35 AM, Karl Voit <devnull@karl-voit.at> wrote:
> I often end up creating a table where I do the header and the outer
> leftmost column. Then I start by creating the second column with
> formulas. In many cases, the following columns are like the previous
> one but with, e.g., $3 instead of $2 in all formulas.

If you are not looking for range formulas

|      | a | b |
|------+---+---|
| 2014 | x | x |
| 2015 | x | x |
#+TBLFM: @<<$<<..@>$> = x

an example would help me to understand.

Michael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-29  9:42 ` org-table-duplicate-column Michael Brand
@ 2013-09-29 19:56   ` Karl Voit
  2013-09-29 20:51     ` org-table-duplicate-column Michael Brand
  0 siblings, 1 reply; 9+ messages in thread
From: Karl Voit @ 2013-09-29 19:56 UTC (permalink / raw)
  To: emacs-orgmode

* Michael Brand <michael.ch.brand@gmail.com> wrote:
> Hi Karl

Hi!

> If you are not looking for range formulas
>
>|      | a | b |
>|------+---+---|
>| 2014 | x | x |
>| 2015 | x | x |
> #+TBLFM: @<<$<<..@>$> = x
>
> an example would help me to understand.

Sure:

| *Option* | *Evaluation 123* | *Evaluation 234* |
|----------+------------------+------------------|
| Option 1 |               27 |               26 |
| Option 2 |               22 |               24 |
| Option 3 |               16 |               16 |
| Option 4 |               16 |             13.5 |
| Option 5 |                8 |                9 |
| Option 6 |                2 |                4 |
|----------+------------------+------------------|
|          |               91 |             92.5 |
#+TBLFM: @8$2=vsum(@I$2..@II$2)::@8$3=vsum(@I$3..@II$3)

The third column is similar to the second. This is a very simple
example with only one formula per column. Usually I end up with more
formulas which I want to be duplicated as well.

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-29 19:56   ` org-table-duplicate-column Karl Voit
@ 2013-09-29 20:51     ` Michael Brand
  2013-09-30 11:43       ` org-table-duplicate-column Karl Voit
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Brand @ 2013-09-29 20:51 UTC (permalink / raw)
  To: news1142; +Cc: Org Mode

Hi Karl

On Sun, Sep 29, 2013 at 9:56 PM, Karl Voit <devnull@karl-voit.at> wrote:
> | *Option* | *Evaluation 123* | *Evaluation 234* |
> |----------+------------------+------------------|
> | Option 1 |               27 |               26 |
> | Option 2 |               22 |               24 |
> | Option 3 |               16 |               16 |
> | Option 4 |               16 |             13.5 |
> | Option 5 |                8 |                9 |
> | Option 6 |                2 |                4 |
> |----------+------------------+------------------|
> |          |               91 |             92.5 |
> #+TBLFM: @8$2=vsum(@I$2..@II$2)::@8$3=vsum(@I$3..@II$3)

I would use

#+TBLFM: @>$<<..@>$> = vsum(@I$0..@II$0)

or the shorter

#+TBLFM: @>$<<..@>$> = vsum(@I..@II)

The $<< vs. $2 etc. leaves TBLFM alone when moving around e. g. column
$2.

Michael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-29 20:51     ` org-table-duplicate-column Michael Brand
@ 2013-09-30 11:43       ` Karl Voit
  2013-09-30 19:30         ` org-table-duplicate-column Michael Brand
  0 siblings, 1 reply; 9+ messages in thread
From: Karl Voit @ 2013-09-30 11:43 UTC (permalink / raw)
  To: emacs-orgmode

* Michael Brand <michael.ch.brand@gmail.com> wrote:
> Hi Karl

Hi Michael!

> On Sun, Sep 29, 2013 at 9:56 PM, Karl Voit <devnull@karl-voit.at> wrote:
>> | *Option* | *Evaluation 123* | *Evaluation 234* |
>> |----------+------------------+------------------|
>> | Option 1 |               27 |               26 |
>> | Option 2 |               22 |               24 |
>> | Option 3 |               16 |               16 |
>> | Option 4 |               16 |             13.5 |
>> | Option 5 |                8 |                9 |
>> | Option 6 |                2 |                4 |
>> |----------+------------------+------------------|
>> |          |               91 |             92.5 |
>> #+TBLFM: @8$2=vsum(@I$2..@II$2)::@8$3=vsum(@I$3..@II$3)
>
> I would use
>
> #+TBLFM: @>$<<..@>$> = vsum(@I$0..@II$0)
> or the shorter
> #+TBLFM: @>$<<..@>$> = vsum(@I..@II)

Never used this kind of reference yet. 

What about alternating data (no summary value at bottom row) and
evaluation columns?

| Data 1 | Eval 1 | Data 2 | Eval 2 |

What about moving columns:

Switching two columns from:
| Eval 1 | Eval 2 | foo | bar |
to:
| Eval 1 | foo | Eval 2 | bar |

("foo" and "bar" do not have those formula fields like Eval columns)

Besides the fact that I personally prefer single column
formulas for legibility and maintainability. I had to spend a minute
to understand "@>$<<..@>$> = vsum(@I..@II)" and I am afraid that I
have to re-spend this minute in three weeks when I have to add data
to the table.

So, yes you clearly helped with the example I posted. However, I
have got the feeling that this method is not able to solve my issue
in all cases. I still tend to think that org-table-duplicate-column
would be handy in many cases.

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-30 11:43       ` org-table-duplicate-column Karl Voit
@ 2013-09-30 19:30         ` Michael Brand
  2013-10-01 15:50           ` org-table-duplicate-column Karl Voit
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Brand @ 2013-09-30 19:30 UTC (permalink / raw)
  To: news1142; +Cc: Org Mode

Hi Karl

On Mon, Sep 30, 2013 at 1:43 PM, Karl Voit <devnull@karl-voit.at> wrote:
> What about alternating data (no summary value at bottom row) and
> evaluation columns?
>
> | Data 1 | Eval 1 | Data 2 | Eval 2 |
>
> What about moving columns:
>
> Switching two columns from:
> | Eval 1 | Eval 2 | foo | bar |
> to:
> | Eval 1 | foo | Eval 2 | bar |

Alternation and moving can be handled with conditional formulas

#+TBLFM: @>$<..@>$> = if(subvec("@1", 2, 6) == "Eval", 42, $0)

in Calc or even simpler (regex) with Lisp. Don't worry, For this I had
to cheat and look in testing/lisp/test-org-table.el with the ERTs that
should also be an advanced documentation. In this case
test-org-table/compare for the comparison and
test-org-table/copy-field for the substring.

> I still tend to think that org-table-duplicate-column
> would be handy in many cases.

I can not understand how with a variable if you mean that
literally. Also with macros for TBLFM as I imagine, that could be
difficult because already now there are conflicts and traps with the
TBLFM syntax.

Michael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-09-30 19:30         ` org-table-duplicate-column Michael Brand
@ 2013-10-01 15:50           ` Karl Voit
  2013-10-01 16:25             ` org-table-duplicate-column Michael Brand
  0 siblings, 1 reply; 9+ messages in thread
From: Karl Voit @ 2013-10-01 15:50 UTC (permalink / raw)
  To: emacs-orgmode

Hi Michael!

* Michael Brand <michael.ch.brand@gmail.com> wrote:
>
> On Mon, Sep 30, 2013 at 1:43 PM, Karl Voit <devnull@karl-voit.at> wrote:
>> What about alternating data (no summary value at bottom row) and
>> evaluation columns?
>>
>> | Data 1 | Eval 1 | Data 2 | Eval 2 |
>>
>> What about moving columns:
>>
>> Switching two columns from:
>> | Eval 1 | Eval 2 | foo | bar |
>> to:
>> | Eval 1 | foo | Eval 2 | bar |
>
> Alternation and moving can be handled with conditional formulas
>
> #+TBLFM: @>$<..@>$> = if(subvec("@1", 2, 6) == "Eval", 42, $0)
>
> in Calc or even simpler (regex) with Lisp. Don't worry, For this I had
> to cheat and look in testing/lisp/test-org-table.el with the ERTs that
> should also be an advanced documentation. In this case
> test-org-table/compare for the comparison and
> test-org-table/copy-field for the substring.

:-)

I could not follow this example without looking into a manual
either.

>> I still tend to think that org-table-duplicate-column
>> would be handy in many cases.
>
> I can not understand how with a variable if you mean that
> literally. Also with macros for TBLFM as I imagine, that could be
> difficult because already now there are conflicts and traps with the
> TBLFM syntax.

I assume, there is a misunderstanding.

What I mean: I have got the following table with two columns
containing two different data columns and one result column
which contains two formulas:

| data1 | data2 | results1 |
|-------+-------+----------|
|     1 |   643 |        2 |
|     4 |    22 |        8 |
|     6 |    91 |       12 |
|-------+-------+----------|
|       |       |       22 |
#+TBLFM: $3=$1*2::@5$3=vsum(@I$3..@II$3)

While being in the outer right column and doing "M-x
org-table-duplicate-column", Org-mode simply duplicates the column
and its related TBLFM entries accordingly:

| data1 | data2 | results1 | results1 |
|-------+-------+----------+----------|
|     1 |   643 |        2 |        2 |
|     4 |    22 |        8 |        8 |
|     6 |    91 |       12 |       12 |
|-------+-------+----------+----------|
|       |       |       22 |       22 |
#+TBLFM: $3=$1*2::@5$3=vsum(@I$3..@II$3) :: $4=$1*2::@5$4=vsum(@I$4..@II$4)

This should be a pretty simple operation in cases where there are no
complicated references.

Then I adopt the resulting TBLFM with only minor effort (*instead of
writing everything from scratch*) and get my similar but not same
forth column:

| data1 | data2 | results1 | results2 |
|-------+-------+----------+----------|
|     1 |   643 |        2 |   321.50 |
|     4 |    22 |        8 |    11.00 |
|     6 |    91 |       12 |    45.50 |
|-------+-------+----------+----------|
|       |       |       22 |   378.00 |
#+TBLFM: $3=$1*2::@5$3=vsum(@I$3..@II$3) :: $4=$2/2;%.2f::@5$4=vsum(@I$4..@II$4);%.2f

Probably I have a different approach because I am clearly no calc
pro user (I need only basics) and I want to keep formulas (and
references) easy to read (maintainability).

Does this make any sense for you?

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-10-01 15:50           ` org-table-duplicate-column Karl Voit
@ 2013-10-01 16:25             ` Michael Brand
  2013-10-01 19:33               ` org-table-duplicate-column Karl Voit
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Brand @ 2013-10-01 16:25 UTC (permalink / raw)
  To: news1142; +Cc: Org Mode

Hi Karl

On Tue, Oct 1, 2013 at 5:50 PM, Karl Voit <devnull@karl-voit.at> wrote:
> I assume, there is a misunderstanding.

Yes there was. With your clean example I understand now.

> [your example]
>
> Does this make any sense for you?

Yes, it absolutely does. Only that someone would have to implement the
missing function org-table-duplicate-column... If you don't already
know it you can use the table formula editor "C-c '" for this in the
meantime to at least copy/paste the formulas for the new column.

Michael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: org-table-duplicate-column
  2013-10-01 16:25             ` org-table-duplicate-column Michael Brand
@ 2013-10-01 19:33               ` Karl Voit
  0 siblings, 0 replies; 9+ messages in thread
From: Karl Voit @ 2013-10-01 19:33 UTC (permalink / raw)
  To: emacs-orgmode

Hi!

* Michael Brand <michael.ch.brand@gmail.com> wrote:
>
> On Tue, Oct 1, 2013 at 5:50 PM, Karl Voit <devnull@karl-voit.at> wrote:
>> I assume, there is a misunderstanding.
>
> Yes there was. With your clean example I understand now.

Sorry that I was not able to describe the issue in the first place.

>> [your example]
>>
>> Does this make any sense for you?
>
> Yes, it absolutely does. Only that someone would have to implement the
> missing function org-table-duplicate-column... If you don't already
> know it you can use the table formula editor "C-c '" for this in the
> meantime to at least copy/paste the formulas for the new column.

Thanks. This is how I do it for now.

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-10-01 19:33 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-29  8:35 org-table-duplicate-column Karl Voit
2013-09-29  9:42 ` org-table-duplicate-column Michael Brand
2013-09-29 19:56   ` org-table-duplicate-column Karl Voit
2013-09-29 20:51     ` org-table-duplicate-column Michael Brand
2013-09-30 11:43       ` org-table-duplicate-column Karl Voit
2013-09-30 19:30         ` org-table-duplicate-column Michael Brand
2013-10-01 15:50           ` org-table-duplicate-column Karl Voit
2013-10-01 16:25             ` org-table-duplicate-column Michael Brand
2013-10-01 19:33               ` org-table-duplicate-column Karl Voit

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).