Yes, that's Dyalog APL and yes that ⎕ml←3 is to get
the APL2 version of the dyad ⊂ .  In APL2 itself:

      ⎕cr 'Key'
z←x(f Key)y;i;j       
z←f¨i[j]⊂y[j←⍋i←1+x⍳x]

      x +/Key y
620 530 300

Note that in both Dyalog APL and APL2 the ⍳
and the [] (i. and { in J) restrict the use 
of Key to vector arguments.  These can not be 
overcome easily.



----- Original Message -----
From: Ian Clark <[email protected]>
Date: Tuesday, May 17, 2011 22:48
Subject: Re: [Jprogramming] Aggregation
To: Programming forum <[email protected]>

> This is Dyalog code, isn't it.
> 
> The author is working with APL2 ...and an old version, I 
> suspect. Does
> it even have direct definition, and []ML=3, which you need for 
> the ⊂
> ...I'm guessing?
> 
> Trouble is, I've only just got hold of APL2 to play with, and I have
> to run it on an old noisy Win2000 I absolutely hate. I'm right 
> out of
> my comfort zone here. But the APL2 will not be so very 
> different. Once
> I've checked it out I'll communicate it to the author. Thank you,
> Roger.
> 
> On Wed, May 18, 2011 at 6:06 AM, Roger Hui <[email protected]> wrote:
> > A more efficient version:
> >
> >      Key←{⎕ML←3 ⋄ ⍺⍺¨i[j]⊂⍵[j←⍋i←1+⍺⍳⍺]}
> >      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
> >
> >
> >
> > ----- Original Message -----
> > From: Roger Hui <[email protected]>
> > Date: Tuesday, May 17, 2011 16:14
> > Subject: Re: [Jprogramming] Aggregation
> > To: Programming forum <[email protected]>
> >
> >> 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

Reply via email to