As a first step in analyzing data it is nice to have subtotals by different parameters. I guess for example one could get total salaries, costs and sales totaled for an entire country and subtotaled by region, sex, age of a sales-force. Each sale can then be included in an array of 6 columns in this case. Each subtotal would be produced with:
mt=:(/:~)@(([:~.{."1 ),.{."1 +//. }."1) In our case, 3 mt (a: 6-column array) would produce all sub-totals. But for all levels of sub-totals as well as the grand total, the following would do: m=: 4 : 0 w=. (0,{:$y)$0 u=.y for_t. i.-x+1 do. u=. t mt u if. t < x do. u=. _ (<a:;t)}u end. w=.w,u end. /:~w ) on my iPad, i get: ts'4 m ?.1000000$,: 4 5#5 100' time: 4.39185 space: 1.97136e8 But I have not ben lucky wit a one-liner on this, I tried: 3 (}.@])`(($:<:@[)(],mt)])@.(0<[)a |stack error | 3 (}.@])`(($:<:@[)(],mt)])@.(0<[)a Expecting to substitute mt into this line and get a mean one-liner. Any hints or suggestion? Robert Cyr Sent from my iPad ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm