20%~ each +/"1 each _20 <\ Prices

This is not moving average as I understand it, because the windows don't
overlap.  You have to use 20 instead of _20.  But a better way is:

   avg=: +/ % #
   20 avg\ Prices

That is, you don't have to box everything up and then apply f to each; you
can give the verb to the adverb, the way verbs and adverbs are meant to
work together.





On Mon, Feb 17, 2014 at 6:36 PM, Joe Bogner <[email protected]> wrote:

> I thought it might be fun to post a J vs R side-by-side comparison. The
> character counts aren't meant to be exact... The solutions are fairly
> similar up until the moving averages. It wasn't meant as a code golf
> exercise.
>
> http://jsbin.com/ihunin/337
>
> After reading R code for years, I actually think the J version is more
> pleasant to look at
>
> I'd like to add an example where J really shines over R. The data.table
> package in R makes it much more succint than normal R code. The most stark
> example I came up with so far is the moving average. Are there any other
> ideas?
>
> There's probably a more concise way to express this too:
> plot > 20%~ each +/"1 each _20 <\ Prices
>
> I thought I could get atop or something to work but I gave up after about
> 10 minutes.
>
>
>
>
>
>
> On Mon, Feb 17, 2014 at 12:59 PM, Joe Bogner <[email protected]> wrote:
>
> > Here is the code:
> >
> > NB. retrieve stock prices from yahoo and do some graphing
> > load 'web/gethttp'
> > load 'tables/csv'
> > load 'plot'
> >
> > URL=:'http://ichart.finance.yahoo.com/table.csv?s='
> >
> > quote=: 3 : 'fixcsv gethttp URL,y'
> >
> > Quotes=: quote each 'DAL';'UAL'
> >
> > 'DAL UAL'=:Quotes
> >
> > DALd =: |. }. DAL
> >
> > Prices=: > ". each 4{"1 DALd
> > plot Prices
> >
> > MaxPrice=: >./ Prices
> >
> > plotPrices =: 3 : 0
> >  pd (i. # y);(|. ,> y)
> > )
> >
> > plotTickers =: 3 : 0
> >  Tickers=.y
> >  pd 'reset'
> >  pd 'key',(, > ' '&, each Tickers)
> >  Quotes=.quote each Tickers
> >  AllPrices=. ". each > }. each 4{"1 each Quotes
> >  plotPrices"1 AllPrices
> >  pd 'show'
> > )
> > plotTickers 'UAL';'DAL';'JBLU'
> >
> > Years=. 4 {. each 0{"1 DALd
> > groupBy=: 4 : '(((~.y) i. y)) ,/. x'
> > YearGroups=:Prices groupBy Year
> > MaxPricePerYear =: >. /"1 YearGroups
> > ]YearKeys=: ". > ~. Year
> > plot YearKeys;MaxPerYear
> >
> >
> >
> >
> >
> > On Mon, Feb 17, 2014 at 12:49 PM, Joe Bogner <[email protected]>
> wrote:
> >
> >> This is a continuation of this thread:
> >> http://jsoftware.com/pipermail/programming/2014-February/035222.htmlbut
> >> moved to chat.
> >>
> >> I posted a video http://www.youtube.com/watch?v=qXFpgYvbogw with the
> >> intent of showing some of J's capabilities.
> >>
> >> I would be happy to hear any feedback on the video.
> >>
> >> Looking back at it, I wish I bumped up the font size. It's best viewed
> >> full screen.
> >>
> >> I tried to flip through things pretty quickly to fit in as much as
> >> possible.  I probably unnecessarily explained things in a few cases. I
> >> still need to practice using the right term for the operations too.
> >>
> >> In terms of my examples, I would like to know if I could put dates
> >> somehow on on X-axis.
> >>
> >> I also worked up an example that used a secondary axis with % change,
> but
> >> I haven't recorded it yet. That might be a continuation. Plotting on a
> >> secondary axis is something that J's plot does real easily compared to
> R.
> >>
> >> Thanks for any feedback
> >>
> >
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to