(reformatted the original)

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