[Jprogramming] 2-dimensional summary report
Roger Hui
rhui000 at shaw.ca
Sun May 18 03:56:37 HKT 2008
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.
----- Original Message -----
From: June Kim <juneaftn at gmail.com>
Date: Saturday, May 17, 2008 11:16
Subject: Re: [Jprogramming] 2-dimensional summary report
To: Programming forum <programming at jsoftware.com>
> 2008/5/18, Roger Hui <rhui000 at shaw.ca>:
> > 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 <juneaftn at gmail.com>
> > Date: Saturday, May 17, 2008 7:44
> > Subject: [Jprogramming] 2-dimensional summary report
> > To: Programming forum <programming at jsoftware.com>
> >
> > > 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?
More information about the Programming
mailing list