( (x e. 'dn')#i.$x )  <-->  ( I. x e. 'dn' )

You can lose the for loop and the two transposes by amending all the
columns at once.

It is better/safer to use dyadic ". for converting literals to numbers.

So this should work (untested):

tblcsv =: 4 : 0
  t=.([: < ;._1 ',',]) ;._2 y-.'"/'
  data=. }.t
  idx=. I. x e. 'dn'
  data=. (_99&". &.> idx{"1 data) (<a:;idx)} data
  ({.t),data
)

Because in-place amendment is not supported for the boxed datatype,
you shouldn't lose anything by dropping the ( data=. aa i}data ) so
you could just do:

tblcsv =: 4 : 0
  t=.([: < ;._1 ',',]) ;._2 y-.'"/'
  idx=. I. x e. 'dn'
  ({.t), (_99&". &.> idx{"1 }.t) (<a:;idx)} }.t
)


On Fri, Jan 13, 2012 at 6:25 AM, Tom Szczesny <tav...@gmail.com> wrote:
> Sorry for all the "chatter".   I think I'm done now...
> Version #4:
>
> tblcsv =: 4 : 0
>  t=.([: < ;._1 ',',]) ;._2 y-.'"/'
>  data=. |:}.t
>  for_k. (x e. 'dn')#i.$x do.
>   data=. (><&.>".'0',"1>k{data) k}data
>  end.
>  ({.t),|:data
> )
>
>
> On Thu, Jan 12, 2012 at 12:05 PM, Tom Szczesny <tav...@gmail.com> wrote:
>
>> Replacing the   -   with  _   is not necessary.
>> Version #2 only works because of a typo in the 3rd line      =,   instead
>> of  =.
>> Version #3:
>>
>> tblcsv =: 4 : 0
>>  r=. y-.'"/'
>>  r=.([: < ;._1 ',',]) ;._2 r
>>  ttl=. {.r
>>  dat=. |:}.r
>>  for_j. (x e. 'dn')#i.$x do.
>>    dat=. (><&.>".'0',"1>j{dat) j}dat
>>  end.
>>  ttl,|:dat
>> )
>>
>>
>> On Thu, Jan 12, 2012 at 11:41 AM, Tom Szczesny <tav...@gmail.com> wrote:
>>
>>> The version I sent earlier appeared to work, but actually does not.  This
>>> version does:
>>>
>>> tblcsv =: 4 : 0
>>>  r=. y-.'"/'
>>>  r=, '_' ((r='-')#i.$r) } r
>>>  r=.([: < ;._1 ',',]) ;._2 r
>>>  ttl=. {.r
>>>  dat=. |:}.r
>>>  for_k. (x e. 'dn')#i.$x do.
>>>    dat=. (><&.>".'0',"1>k{dat) k}dat
>>>  end.
>>>  ttl,|:dat
>>> )
>>>
>>> Thanks again to everyone for all the help.
>>>
>>> On Thu, Jan 12, 2012 at 8:59 AM, Tom Szczesny <tav...@gmail.com> wrote:
>>>
>>>> Thanks much.
>>>> Since I create the csv files, I was able to take some shortcuts:
>>>> 1)  All   "   are spurious  (no commas in columns containing comments)
>>>> 2)  -   only occurs in negative numbers
>>>> 3)  /   only occus in dates   2004/12/15  (remove the  /  and don't need
>>>> getdate at all)
>>>>
>>>> This definition is working fine:
>>>>
>>>> tblcsv =: 4 : 0
>>>>  r=. y-.'"/'
>>>>  r=, '_' ((r='-')#i.$r) } r
>>>>  r=.([: < ;._1 ',',]) ;._2 r
>>>>  ttl=. {.r
>>>>  dat=. |:}.r
>>>>  for_i. (x e. 'dn')#i.$x do.
>>>>    dat=. (<"".>i{ dat) i} dat
>>>>  end.
>>>>  ttl,|:dat
>>>> )
>>>>
>>>> For large files, the biggest time user might be the need to do transpose
>>>> twice.
>>>> tx=:'ssdndssnnnnnnnnnnnnndnns' tblcsv 1!:1 <'t.csv'
>>>>
>>>> On Thu, Jan 12, 2012 at 6:16 AM, R.E. Boss <r.e.b...@planet.nl> wrote:
>>>>
>>>>> If you have a lot of dates, say >100k, getdate will be rather slow.
>>>>> But since the nub of these dates probably will contain <10k dates, you
>>>>> can
>>>>> use nubindex http://www.jsoftware.com/help/dictionary/d221.htm
>>>>> For that the following adverb will do (tested long time ago)
>>>>>
>>>>>        nbind=:1 : '](i.!.0~ { u @:]) ~.'
>>>>>
>>>>>
>>>>> R.E. Boss
>>>>>
>>>>>
>>>>> > -----Oorspronkelijk bericht-----
>>>>> > Van: general-boun...@jsoftware.com [mailto:general-
>>>>> > boun...@jsoftware.com] Namens R.E. Boss
>>>>> > Verzonden: woensdag 11 januari 2012 21:48
>>>>> > Aan: 'General forum'
>>>>> > Onderwerp: Re: [Jgeneral] Data from csv files
>>>>> >
>>>>> > require 'dates'
>>>>> >
>>>>> >      100 #.  getdate'2012/01/12'
>>>>> > 20120112
>>>>> >
>>>>> > I would transpose (|:) the matrix and then work a row at a time,
>>>>> depending
>>>>> > on the control vector.
>>>>> > Recently I learned techniques to assign different verbs to different
>>>>> items.
>>>>> >
>>>>> >
>>>>> > R.E. Boss
>>>>> >
>>>>> >
>>>>> > > -----Oorspronkelijk bericht-----
>>>>> > > Van: general-boun...@jsoftware.com [mailto:general-
>>>>> > > boun...@jsoftware.com] Namens Tom Szczesny
>>>>> > > Verzonden: woensdag 11 januari 2012 21:13
>>>>> > > Aan: General forum
>>>>> > > Onderwerp: Re: [Jgeneral] Data from csv files
>>>>> > >
>>>>> > > Thanks, that is very nice to know, but ...
>>>>> > >
>>>>> > > Since the csv files I need were created by me, I also know that
>>>>> > > -  the only occurrences of   "   are spuriously added.
>>>>> > > -  the only occurrences of   -   are in the representation of
>>>>> negative
>>>>> > > numbers, so I can define
>>>>> > >
>>>>> > > tblcsv=: 3 : 0
>>>>> > >    r=: (-.y='"')#y
>>>>> > >    r=: '_' ((r='-')#i.$r) } r
>>>>> > >    ([: < ;._1 ',',]) ;._2 r
>>>>> > > )
>>>>> > >
>>>>> > > Next, I plan to figure out how to convert the columns with character
>>>>> > > strings representing numbers into actual numbers,
>>>>> > > and the columns with character strings representing dates (
>>>>> 2012/01/12 )
>>>>> > > into numbers representing dates ( 20120112 ),
>>>>> > > where tblcsv becomes dyadic with a control vector like 'SDSSNDNSNS'
>>>>> as
>>>>> > the
>>>>> > > left argument
>>>>> > > indicating which columns are strings, dates & numbers.
>>>>> > >
>>>>> > > On Wed, Jan 11, 2012 at 2:27 PM, Ric Sherlock <tikk...@gmail.com>
>>>>> wrote:
>>>>> > >
>>>>> > > > Note that you don't need to define tblcsv explicitly:
>>>>> > > >   tblcsv=: ([: <;._1 ','&,);._2
>>>>> > > > or
>>>>> > > >   tblcsv=: ([: <;._1 ',' , ]);._2
>>>>> > > >
>>>>> > > > On Thu, Jan 12, 2012 at 6:29 AM, Tom Szczesny <tav...@gmail.com>
>>>>> > > wrote:
>>>>> > > > > tested  ......  works . .....  thanks!
>>>>> > > > >
>>>>> > > > > On Wed, Jan 11, 2012 at 12:23 PM, R.E. Boss <r.e.b...@planet.nl
>>>>> >
>>>>> > wrote:
>>>>> > > > >
>>>>> > > > >> tblcsv =: 3 : 0
>>>>> > > > >>  ([: <;._1 ',',]) ;._2 y
>>>>> > > > >>  )
>>>>> > > > >> (untested)
>>>>> > > > >>
>>>>> > > > >> R.E. Boss
>>>>> > > > >>
>>>>> > > > >>
>>>>> > > > >> > -----Oorspronkelijk bericht-----
>>>>> > > > >> > Van: general-boun...@jsoftware.com [mailto:general-
>>>>> > > > >> > boun...@jsoftware.com] Namens Tom Szczesny
>>>>> > > > >> > Verzonden: woensdag 11 januari 2012 17:55
>>>>> > > > >> > Aan: General forum
>>>>> > > > >> > Onderwerp: Re: [Jgeneral] Data from csv files
>>>>> > > > >> >
>>>>> > > > >> > Given
>>>>> > > > >> >
>>>>> > > > >> > cutc =: 3 : 0
>>>>> > > > >> >   < ;._1 ',',y
>>>>> > > > >> > )
>>>>> > > > >> >
>>>>> > > > >> > tblcsv =: 3 : 0
>>>>> > > > >> >   cutc ;._2 y
>>>>> > > > >> > )
>>>>> > > > >> >
>>>>> > > > >> > tblcsv 1!:1 <'test.csv'
>>>>> > > > >> >
>>>>> > > > >> > I assumed that I would be able to represent this as a single
>>>>> > > > definition,
>>>>> > > > >> > such as
>>>>> > > > >> >
>>>>> > > > >> > tblcsv =: 3 : 0
>>>>> > > > >> >   ( <;._1 ',',) ;._2 y
>>>>> > > > >> > )
>>>>> > > > >> >
>>>>> > > > >> > or
>>>>> > > > >> >
>>>>> > > > >> > tblcsv =: 3 : 0
>>>>> > > > >> >   (( <;._1',',)&) ;._2 y
>>>>> > > > >> > )
>>>>> > > > >> >
>>>>> > > > >> > I've tried several other vaiations, and all result in 'syntax
>>>>> > error'.
>>>>> > > >  Am
>>>>> > > > >> I
>>>>> > > > >> > missing something, or does the verb applied to each 'cut'
>>>>> interval
>>>>> > > > need
>>>>> > > > >> to
>>>>> > > > >> > be defined separately?
>>>>> > > > >> >
>>>>> > > > >> > On Mon, Jan 9, 2012 at 5:00 PM, Arthur Anger <an...@mit.edu>
>>>>> > > wrote:
>>>>> > > > >> >
>>>>> > > > >> > > I often use Rank to select sub-arrays from an array:
>>>>> > > > >> > >  <"0 i. 7
>>>>> > > > >> > > --Art
>>>>> > > > >> > > ------------------
>>>>> > > > >> > > Quoting general-requ...@jsoftware.com:
>>>>> > > > >> > > . . .
>>>>> > > > >> > > > Message: 2
>>>>> > > > >> > > > Date: Mon, 9 Jan 2012 11:46:24 -0500
>>>>> > > > >> > > > From: Tom Szczesny <tav...@gmail.com>
>>>>> > > > >> > > > Subject: Re: [Jgeneral] Data from csv files
>>>>> > > > >> > > > To: General forum <general@jsoftware.com>
>>>>> > > > >> > > > Message-ID:
>>>>> > > > >> > > >       <CABn7SNYFw2gyAPKcjx1DMLEru97NMTst6zoGx=
>>>>> > > > >> > > 3olq1rko7...@mail.gmail.com>
>>>>> > > > >> > > > Content-Type: text/plain; charset=ISO-8859-1
>>>>> > > > >> > > >
>>>>> > > > >> > > > As mentioned in the dictionary entry for cut:
>>>>> > > > >> > > > the phrase   u;._2 y     applies the verb u to each
>>>>> interval
>>>>> > > > created
>>>>> > > > >> by
>>>>> > > > >> > > cut,
>>>>> > > > >> > > > where the fret is the last item, and marks the ends of
>>>>> the
>>>>> > > > intervals.
>>>>> > > > >> > > >
>>>>> > > > >> > > > What is the notation for applying the "each" concept to a
>>>>> verb
>>>>> > > > >> > > independent
>>>>> > > > >> > > > of   cut   ?
>>>>> > > > >> > > > For example,
>>>>> > > > >> > > >   <i.7
>>>>> > > > >> > > > +-------------+
>>>>> > > > >> > > > |0 1 2 3 4 5 6|
>>>>> > > > >> > > > +-------------+
>>>>> > > > >> > > >
>>>>> > > > >> > > > How do you express
>>>>> > > > >> > > >    <  each  i.7
>>>>> > > > >> > > > and get 7 individually boxed items?
>>>>> > > > >> > > > (I could not find an entry for "each" in the Index, nor
>>>>> in
>>>>> the
>>>>> > > > >> > > Vocabulary.)
>>>>> > > > >> > > . . .
>>>>> > > > >> > > > End of General Digest, Vol 76, Issue 8
>>>>> > > > >> > > > **************************************
>>>>> > > > >> > >
>>>>> > > > >> > >
>>>>> > > >
>>>>> ----------------------------------------------------------------------
>>>>> > > > >> > > For information about J forums see
>>>>> > > > >> > http://www.jsoftware.com/forums.htm
>>>>> > > > >> > >
>>>>> > > > >> >
>>>>> > ----------------------------------------------------------------------
>>>>> > > > >> > For information about J forums see
>>>>> > > > http://www.jsoftware.com/forums.htm
>>>>> > > > >>
>>>>> > > > >>
>>>>> > ----------------------------------------------------------------------
>>>>> > > > >> For information about J forums see
>>>>> > > http://www.jsoftware.com/forums.htm
>>>>> > > > >>
>>>>> > > > >
>>>>> ----------------------------------------------------------------------
>>>>> > > > > For information about J forums see
>>>>> > > http://www.jsoftware.com/forums.htm
>>>>> > > >
>>>>> ----------------------------------------------------------------------
>>>>> > > > For information about J forums see
>>>>> > > http://www.jsoftware.com/forums.htm
>>>>> > > >
>>>>> > >
>>>>> ----------------------------------------------------------------------
>>>>> > > For information about J forums see
>>>>> > http://www.jsoftware.com/forums.htm
>>>>> >
>>>>> > ----------------------------------------------------------------------
>>>>> > For information about J forums see
>>>>> http://www.jsoftware.com/forums.htm
>>>>>
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>
>>>>
>>>>
>>>
>>
> ----------------------------------------------------------------------
> 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