I agree. (But it's amazing what a dog's dinner you can make of it if you're an APL novice. I recall my earliest APL code and I can't help though but sympathise)
On Wed, May 18, 2011 at 12:13 AM, Roger Hui <[email protected]> wrote: > It should not be verbose even in APL: > > Key←{⍺⍺¨(↓(∪⍺)∘.=⍺)/¨⊂⍵} > > x←1 1 1 1 2 2 2 33 33 33 > y←100 100 20 400 30 200 300 100 100 100 > x +/ Key y > 620 530 300 > > p←10?10 > x[p] > 1 33 33 33 2 2 1 2 1 1 > y[p] > 20 100 100 100 300 200 400 30 100 100 > x[p] +/ Key y[p] > 620 300 530 > > > > ----- Original Message ----- > From: Ian Clark <[email protected]> > Date: Tuesday, May 17, 2011 15:28 > Subject: Re: [Jprogramming] Aggregation > To: Programming forum <[email protected]> > >> Thanks folx, that's pretty useful. >> >> Our author should be pleased to know it. He's been doing it a >> long-winded way in APL. >> >> So... everyone on the list calls it "Key"...? >> >> Did I hear the term "sub-addition" once, in passing? >> >> >> >> On Tue, May 17, 2011 at 10:34 PM, Roger Hui <[email protected]> >> wrote:> See http://www.jsoftware.com/jwiki/Essays/Key >> > for some additional uses of "key". >> > >> > >> > >> > ----- Original Message ----- >> > From: Marshall Lochbaum <[email protected]> >> > Date: Tuesday, May 17, 2011 14:15 >> > Subject: Re: [Jprogramming] Aggregation >> > To: 'Programming forum' <[email protected]> >> > >> >> The standard solution would be to use key (/.): >> >> +//./ |: arr >> >> >> >> The three slashes in a row make this a bit confusing, but it is >> >> equivalentto >> >> ({."1 (+/)/. {:"1) arr >> >> where key is the really important part. >> >> >> >> Marshall >> >> >> >> -----Original Message----- >> >> From: [email protected] >> >> [mailto:[email protected]] On Behalf Of Ian Clark >> >> Sent: Tuesday, May 17, 2011 5:09 PM >> >> To: Programming forum >> >> Subject: [Jprogramming] Aggregation >> >> >> >> I'm being lazy here. But I need a better answer than I can devil >> >> out myself. >> >> It occurs in a recent submission to Vector... >> >> >> >> I have an array like this (which may be unsorted, and can grow >> >> very large): >> >> >> >> 1 100 >> >> 1 100 >> >> 1 20 >> >> 1 400 >> >> 2 30 >> >> 2 200 >> >> 2 300 >> >> 33 100 >> >> 33 100 >> >> 33 100 >> >> >> >> I want to collapse it to: >> >> >> >> 1 620 >> >> 2 530 >> >> 33 300 >> >> >> >> i.e. summing over subheadings. >> >> The original example had A B C in place of 1 2 33, but >> >> numbers will do, to >> >> save boxing. We don't know the full set of A B C ... in advance. >> >> Nothing to >> >> be assumed about the first column, except it is >> >> +ve integers. But I'm also interested in the case where the first >> >> column lies in the set: i.(n) for some n>0. In other words they >> >> can be >> >> squashed up. >> >> >> >> 1. There's simply got to be a "jem" to do it. Suggestions, please. >> >> - Transpose the array if you wish. Box it: 1 100 ; 1 >> 100 ; 1 20 ; >> >> ... >> >> -whatever. >> >> - No, of course I don't want a looping solution :) >> >> >> >> 2. What do you call this process? I call it "aggregation" -- but >> >> I think the >> >> name differs across disciplines. > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
