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