2008/5/18, Roger Hui <[EMAIL PROTECTED]>:
> It's more efficient to work with the indices rather
> than the labels. You can put the labels back in
> at the end for the report.
>
Yes, I learned that from you and I used the approach in my previous script:
ind=:i.~ ~.
areas=: ind 0{"1 d
models=:ind 1{"1 d
Are you thinking of something better than this?
>
>
> ----- Original Message -----
> From: June Kim <[EMAIL PROTECTED]>
> Date: Saturday, May 17, 2008 11:16
> Subject: Re: [Jprogramming] 2-dimensional summary report
> To: Programming forum <[email protected]>
>
> > 2008/5/18, Roger Hui <[EMAIL PROTECTED]>:
> > > Convert areas and models into indices and assign sales
> > > into those locations of a matrix of zeros.
> > >
> > > ij=. area,.model
> > > (ij +//. sales) (<"1 ~.ij)}(m,n)$0
> >
> > Thanks.
> >
> > It is basically similar to what I originally wrote, but yours is
> > much cleaner.
> >
> > Hence, I have cleaned up my code as following:
> >
> > load 'strings'
> > data=: 0 : 0
> > area model sales
> > north T2 3
> > south T2 4
> > north T3 10
> > north T3 5
> > east T1 1
> > west T3 1
> > south T2 11
> > north T4 2
> > west T3 1
> > east T4 1
> > west T4 6
> > )
> > d=: (<a:;<2) ((".&.>)@{)`[`]} }. cut;._2 data
> >
> > ind=:i.~ ~.
> > areas=: ind 0{"1 d
> > models=:ind 1{"1 d
> > sales=: > 2{"1 d
> >
> > keys=:areas,.models
> > salessum=:keys +//. sales
> >
> > blank=:0$~(#~.areas),#~.models
> > salessum (<"1 ~. keys)} blank
> > 3 15 0 2
> > 15 0 0 0
> > 0 0 1 1
> > 0 2 0 6
> >
> >
> > Any more suggestions for improvement?
> >
> > >
> > > If there can be at most one figure for each
> > > pair of (area,model) then you can skip the
> > > cumulation and the nub:
> > >
> > > sales (<"1 area,.model)}(m,n)$0
> > >
> >
> > Right, but it's not appicable to my case.
> >
> > >
> > >
> > > ----- Original Message -----
> > > From: June Kim <[EMAIL PROTECTED]>
> > > Date: Saturday, May 17, 2008 7:44
> > > Subject: [Jprogramming] 2-dimensional summary report
> > > To: Programming forum <[email protected]>
> > >
> > > > Suppose the data is given as following:
> > > >
> > > > data=: 0 : 0
> > > > area model sales
> > > > north T2 3
> > > > south T2 4
> > > > north T3 10
> > > > north T3 5
> > > > east T1 1
> > > > west T3 1
> > > > south T2 11
> > > > north T4 2
> > > > west T3 1
> > > > east T4 1
> > > > west T4 6
> > > > )
> > > > d=: (<a:;<2) ((".&.>)@{)`[`]} }.
> > cut;._2 data
> > > >
> > > >
> > > > What I want is a report of sales for area by model:
> > > >
> > > >
> > > > NB.
> > T2 T3 T1 T4
> > > > NB. north 3
> > > > 15 0 2
> > > > NB. south 15
> > > > 0 0 0
> > > > NB. east
> > > > 0 0 1 1
> > > > NB. west
> > > > 0 2 0 6
> > > >
> > > >
> > > > The final matrix doesn't need to contain row, column-headers
> > --
> > > > it is
> > > > fine that it contains only the sales total for each area and model
> > > > pairs.
> > > >
> > > > I'd like to know easy and simple ways to getting that matrix
> > in J.
> > > > What's your suggestion?
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm