Hi,

 

I have a question about composing functions.  I have the following scenario.

 

1.  I read in a csv file.

2.  I split the array its constituent columns.

3.  The columns are a mix of text and number data.  

 

4. I wrote two  verbs that gives me the nub, frequency, and % of total for 
items in the array.

 

nfpt=:([: <"1 ~.) ,. ([: <"0 #/.~) ,. [: <"0 #/.~ % #                           
       NB.  For Text columns

nfpt2=:([: <"0 ~.) ,. ([: <"0 #/.~) ,. [: <"0 #/.~ % #                          
     NB.  For Numeric columns

 

examples:

 

/:~nfpt2 ? 1000 $ 100

┌──┬──┬─────┐

│0 │11│0.011│

├──┼──┼─────┤

│1 │7 │0.007│

├──┼──┼─────┤

│2 │13│0.013│

├──┼──┼─────┤

│3 │14│0.014│

├──┼──┼─────┤

 

   /:~nfpt event_type_name    

┌─────────┬─────┬─────────┐

│Call     │4029 │0.120484 │

├─────────┼─────┼─────────┤

│Email    │1830 │0.0547249│

├─────────┼─────┼─────────┤

│Web_Event│27581│0.824791 │

└─────────┴─────┴─────────┘

 

As you can see, I have explicit ranks of (1, 0, 0) for the text version , and 
(0, 0, 0) for the numeric..  

 

I want to be able to get rid of these explicit ranks.  I've tried things like

 

   nfpt3=:([: <"( <:[EMAIL PROTECTED]) ~.) ,. ([: <"( <:[EMAIL PROTECTED]) 
#/.~) ,. [: <"( <:[EMAIL PROTECTED]) #/.~ % #    NB. ( <:[EMAIL PROTECTED]) 
replaces explicit rank..  

 

but the results I get are not what I am looking for.

   

/:~nfpt3 event_type_name

┌─────────┬───────────────────────────┐

│Call     │0.120484 0.0547249 0.824791│

│Email    │                           │

│Web_Event│                           │

├─────────┼───────────────────────────┤

│Call     │4029 1830 27581            │

│Email    │                           │

│Web_Event│                           │

└─────────┴───────────────────────────┘

 

I know this is probably a trivial problem, but I am stumped.

 

what am I doing wrong?

 

thanks,

 

Ken

 

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to