<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Summary Table, Ninja Style in Wasatch Front JMP Users Group Discussions</title>
    <link>https://community.jmp.com/t5/Wasatch-Front-JMP-Users-Group/Summary-Table-Ninja-Style/m-p/28927#M29</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;One of the things that I often mention to newcomers to JMP is that the "Power of JMP" is in the data tables - they usually look at me a bit askance, squirm a bit and try to change the subject to the hot new freshness, and generally respond with "Sure don, but I don't care about lowly tables, I want to know about Deep, Deep Neural Networks!" - all in good time my young Padawan.&amp;nbsp; To back-up my claim, all we have to do is look to where the JMP developers have placed the &lt;SPAN style="font-weight: bold;"&gt;Tables&lt;/SPAN&gt; menu item -right after File, and before DOE.&amp;nbsp; It is clear the level of importance they themselves give to tables - right up there with breathing!&amp;nbsp; There are currently twelve options under the table menu and to achieve the John Sall ninja level you must understand them all.&amp;nbsp; Fortunately, JMP has excellent training material to help you with that, and I will leave that for study during your meditations.&amp;nbsp; For this post, I'm going to show a simple script to obtain a lowly summary table.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Personally, I use summary tables all the time.&amp;nbsp; I use them to check the values in a column, I use them to select rows in the main table via the table linkage property, I use them for reports to management - and when necessary, I cut my hair with them -&amp;nbsp; basically the better question would be, "when do I not use summary tables…" and of course the answer is when the data requires a slightly subtle transpose or stacking or joining or concatenating as the ninja level (and data) dictate.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Why you may ask would we need a script to create a summary table when the very first menu item under the Tables menu is Summary?&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-1 jive-image" src="https://community.jmp.com/legacyfs/online/11017_pastedImage_3.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Firstly, to achieve the John Sall ninja level you will control JMP with your mind - however before we can hope to achieve that level of skill,&amp;nbsp; we must walk.&amp;nbsp; And we must walk before we can run, and scripting is the way for us to skip at a slightly faster than walking pace - which is a nice trade-off until our force (JMP) skills develop.&amp;nbsp; Secondly, would be to understand that summary tables and aggregations are the beginning of the canonical &lt;A href="http://vita.had.co.nz/papers/plyr.pdf"&gt;Split Apply Combine&lt;/A&gt; method outlined by Hadley Wickam - (which is far on the journey up the mountain to the John Sall ninja level).&amp;nbsp; And lastly, because by applying this method I have saved myself a ton of summary button mouse clicks and have now accrued enough time to write this blog post.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;And without further annoyance, here is the given summary table JSL script.&amp;nbsp; Note, it is given in a handy and ninja friendly functional format as all good scripts are.&amp;nbsp; This will make it quite easy for you to bend it to your will and make modifications for it to give up all the ninja table secrets.&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//begin script&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//DEFINITIONS&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;Names Default to Here(1);&amp;nbsp; //Always begin scripts with this!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//function will create a summary table of counts from the current data table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//requires a column to be selected in the table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;sumdt = Function({dt}, {Default Local},&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; selcollst = dt &amp;lt;&amp;lt; Get Selected Columns(string);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; //Grab select columns&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; If(NItems(selcollst) &amp;gt; 0,&amp;nbsp; //check that a column is selected in the table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; summaryexpr = Expr("dt &amp;lt;&amp;lt; Summary(Group(sublst))");&amp;nbsp; //base expression for a summary table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = "";&amp;nbsp; //empty string place holder&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; //build Expr&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; for(idx=1, idx&amp;lt;=NItems(selcollst), idx++,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; If(idx == 1,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = "Column(\!"" || selcollst[idx] || "\!")";&amp;nbsp; //for first column&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; ,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = liststr || ", Column(\!"" || selcollst[idx] || "\!")";&amp;nbsp; //if there are additional columns&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; SubstituteInto(summaryexpr, "sublst", liststr);&amp;nbsp; //perform the substitution&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; sumdt = Eval(Parse(summaryexpr));&amp;nbsp; //here is where the magic happens&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; return(sumdt);&amp;nbsp; //always nice to return a handle - maybe you will use it in another script?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; , //then nothing is selected in the data table - it's nice to prompt the user if they haven't selected anything&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Caption(&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; {200, 200},&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; "Please select a column to aggregate",&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Font("Arial Black"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Font Size(16),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; TextColor("red"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; BackColor("black"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Spoken(0)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Wait(4);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Caption(Remove);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//MAIN&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;dt = current data table();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;sdt = sumdt(dt);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//end of script - formatting in this blog is not good for JSL...&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;While this is nice and you can easily verify it for yourself, I feel if we do not incorporate this into our workflow we are somehow not really trying to get to that ninja level.&amp;nbsp; Also, a moment discussion on workflow would be appropriate.&amp;nbsp; I have this simple script linked to a keyboard hot-key combination and my workflow consists of:&amp;nbsp; while I have a data table open I select a column from the column panel &amp;lt;below&amp;gt; and then use my hot-key combo to get an aggregate (summary table) of the selected columns.&amp;nbsp; That really is all there is to it.&amp;nbsp; Ninja skills are apparently deceptively simple.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Column viewer (Big Class) - select aggregate columns of interest&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-2 jive-image" src="https://community.jmp.com/legacyfs/online/11018_pastedImage_7.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Hit the hot-key combo for our table summary script to get the aggregate by (age, sex)&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-3 jive-image" src="https://community.jmp.com/legacyfs/online/11019_pastedImage_8.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Wait, hot-key you say...&amp;nbsp; So how do we link the script to a hot-key?&amp;nbsp; Good question - I'm sure there is a better ninja (JMP) reference on this but briefly…&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt;"&gt;1.&lt;/SPAN&gt; copy the script to your clipboard&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt;"&gt;2.&lt;/SPAN&gt; Under View --&amp;gt; Customize --&amp;gt; (select) Menus and Toolbars&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-4" src="https://community.jmp.com/legacyfs/online/11020_pastedImage_9.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. Under the toolbars section right click to add a &lt;SPAN style="font-weight: bold;"&gt;New Toolbar&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-5 jive-image" src="https://community.jmp.com/legacyfs/online/11021_pastedImage_10.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. Name said toolbar - of course Ninja would be appropriate&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-6 jive-image" src="https://community.jmp.com/legacyfs/online/11022_pastedImage_15.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. Expand ninja and select the untitled script&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-7 jive-image" src="https://community.jmp.com/legacyfs/online/11023_pastedImage_16.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6. On the right hand pane name your script and paste our JSL function into the 'Run this JSL' section&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-8" src="https://community.jmp.com/legacyfs/online/11024_pastedImage_17.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7. Choose a nice built-in JMP Icon - hey thanks JMP I'll just borrow that summary table Icon &lt;SPAN __jive_emoticon_name="happy" __jive_macro_name="emoticon" class="jive_emote jive_macro" src="https://community.jmp.com/7.0.4.3b79b96/images/emoticons/happy.png"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-9 jive-image" src="https://community.jmp.com/legacyfs/online/11025_pastedImage_20.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8. Make sure to assign your shortcut!&amp;nbsp; You will get an extra ninja level for that!&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-10" src="https://community.jmp.com/legacyfs/online/11026_pastedImage_21.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Hit OK and level up!&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;You may get this customization screen - just hit Ok&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-11 jive-image" src="https://community.jmp.com/legacyfs/online/11027_pastedImage_22.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;If you are one of those visual folks and want to see your new button - just head to &lt;SPAN style="font-weight: bold;"&gt;View --&amp;gt; Toolbars&lt;/SPAN&gt; and make sure your new Ninja toolbar is checked&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-12 jive-image" src="https://community.jmp.com/legacyfs/online/11028_pastedImage_23.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;IMG class="image-13 jive-image" src="https://community.jmp.com/legacyfs/online/11029_pastedImage_24.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;IMG class="jive-image image-14" src="data:image/png;base64,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" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Enjoy your new Nina Table Skills!&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Best,&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;don&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 19 Feb 2016 00:18:00 GMT</pubDate>
    <dc:creator>dkent</dc:creator>
    <dc:date>2016-02-19T00:18:00Z</dc:date>
    <item>
      <title>Summary Table, Ninja Style</title>
      <link>https://community.jmp.com/t5/Wasatch-Front-JMP-Users-Group/Summary-Table-Ninja-Style/m-p/28927#M29</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;One of the things that I often mention to newcomers to JMP is that the "Power of JMP" is in the data tables - they usually look at me a bit askance, squirm a bit and try to change the subject to the hot new freshness, and generally respond with "Sure don, but I don't care about lowly tables, I want to know about Deep, Deep Neural Networks!" - all in good time my young Padawan.&amp;nbsp; To back-up my claim, all we have to do is look to where the JMP developers have placed the &lt;SPAN style="font-weight: bold;"&gt;Tables&lt;/SPAN&gt; menu item -right after File, and before DOE.&amp;nbsp; It is clear the level of importance they themselves give to tables - right up there with breathing!&amp;nbsp; There are currently twelve options under the table menu and to achieve the John Sall ninja level you must understand them all.&amp;nbsp; Fortunately, JMP has excellent training material to help you with that, and I will leave that for study during your meditations.&amp;nbsp; For this post, I'm going to show a simple script to obtain a lowly summary table.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Personally, I use summary tables all the time.&amp;nbsp; I use them to check the values in a column, I use them to select rows in the main table via the table linkage property, I use them for reports to management - and when necessary, I cut my hair with them -&amp;nbsp; basically the better question would be, "when do I not use summary tables…" and of course the answer is when the data requires a slightly subtle transpose or stacking or joining or concatenating as the ninja level (and data) dictate.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Why you may ask would we need a script to create a summary table when the very first menu item under the Tables menu is Summary?&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-1 jive-image" src="https://community.jmp.com/legacyfs/online/11017_pastedImage_3.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Firstly, to achieve the John Sall ninja level you will control JMP with your mind - however before we can hope to achieve that level of skill,&amp;nbsp; we must walk.&amp;nbsp; And we must walk before we can run, and scripting is the way for us to skip at a slightly faster than walking pace - which is a nice trade-off until our force (JMP) skills develop.&amp;nbsp; Secondly, would be to understand that summary tables and aggregations are the beginning of the canonical &lt;A href="http://vita.had.co.nz/papers/plyr.pdf"&gt;Split Apply Combine&lt;/A&gt; method outlined by Hadley Wickam - (which is far on the journey up the mountain to the John Sall ninja level).&amp;nbsp; And lastly, because by applying this method I have saved myself a ton of summary button mouse clicks and have now accrued enough time to write this blog post.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;And without further annoyance, here is the given summary table JSL script.&amp;nbsp; Note, it is given in a handy and ninja friendly functional format as all good scripts are.&amp;nbsp; This will make it quite easy for you to bend it to your will and make modifications for it to give up all the ninja table secrets.&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//begin script&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//DEFINITIONS&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;Names Default to Here(1);&amp;nbsp; //Always begin scripts with this!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//function will create a summary table of counts from the current data table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//requires a column to be selected in the table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;sumdt = Function({dt}, {Default Local},&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; selcollst = dt &amp;lt;&amp;lt; Get Selected Columns(string);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; //Grab select columns&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; If(NItems(selcollst) &amp;gt; 0,&amp;nbsp; //check that a column is selected in the table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; summaryexpr = Expr("dt &amp;lt;&amp;lt; Summary(Group(sublst))");&amp;nbsp; //base expression for a summary table&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = "";&amp;nbsp; //empty string place holder&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; //build Expr&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; for(idx=1, idx&amp;lt;=NItems(selcollst), idx++,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; If(idx == 1,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = "Column(\!"" || selcollst[idx] || "\!")";&amp;nbsp; //for first column&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; ,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; liststr = liststr || ", Column(\!"" || selcollst[idx] || "\!")";&amp;nbsp; //if there are additional columns&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; SubstituteInto(summaryexpr, "sublst", liststr);&amp;nbsp; //perform the substitution&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; sumdt = Eval(Parse(summaryexpr));&amp;nbsp; //here is where the magic happens&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; return(sumdt);&amp;nbsp; //always nice to return a handle - maybe you will use it in another script?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; , //then nothing is selected in the data table - it's nice to prompt the user if they haven't selected anything&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Caption(&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; {200, 200},&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; "Please select a column to aggregate",&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Font("Arial Black"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Font Size(16),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; TextColor("red"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; BackColor("black"),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Spoken(0)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Wait(4);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Caption(Remove);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//MAIN&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;dt = current data table();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;sdt = sumdt(dt);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;//end of script - formatting in this blog is not good for JSL...&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;While this is nice and you can easily verify it for yourself, I feel if we do not incorporate this into our workflow we are somehow not really trying to get to that ninja level.&amp;nbsp; Also, a moment discussion on workflow would be appropriate.&amp;nbsp; I have this simple script linked to a keyboard hot-key combination and my workflow consists of:&amp;nbsp; while I have a data table open I select a column from the column panel &amp;lt;below&amp;gt; and then use my hot-key combo to get an aggregate (summary table) of the selected columns.&amp;nbsp; That really is all there is to it.&amp;nbsp; Ninja skills are apparently deceptively simple.&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Column viewer (Big Class) - select aggregate columns of interest&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-2 jive-image" src="https://community.jmp.com/legacyfs/online/11018_pastedImage_7.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Hit the hot-key combo for our table summary script to get the aggregate by (age, sex)&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-3 jive-image" src="https://community.jmp.com/legacyfs/online/11019_pastedImage_8.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Wait, hot-key you say...&amp;nbsp; So how do we link the script to a hot-key?&amp;nbsp; Good question - I'm sure there is a better ninja (JMP) reference on this but briefly…&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt;"&gt;1.&lt;/SPAN&gt; copy the script to your clipboard&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt;"&gt;2.&lt;/SPAN&gt; Under View --&amp;gt; Customize --&amp;gt; (select) Menus and Toolbars&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-4" src="https://community.jmp.com/legacyfs/online/11020_pastedImage_9.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. Under the toolbars section right click to add a &lt;SPAN style="font-weight: bold;"&gt;New Toolbar&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-5 jive-image" src="https://community.jmp.com/legacyfs/online/11021_pastedImage_10.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. Name said toolbar - of course Ninja would be appropriate&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-6 jive-image" src="https://community.jmp.com/legacyfs/online/11022_pastedImage_15.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. Expand ninja and select the untitled script&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-7 jive-image" src="https://community.jmp.com/legacyfs/online/11023_pastedImage_16.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6. On the right hand pane name your script and paste our JSL function into the 'Run this JSL' section&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-8" src="https://community.jmp.com/legacyfs/online/11024_pastedImage_17.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7. Choose a nice built-in JMP Icon - hey thanks JMP I'll just borrow that summary table Icon &lt;SPAN __jive_emoticon_name="happy" __jive_macro_name="emoticon" class="jive_emote jive_macro" src="https://community.jmp.com/7.0.4.3b79b96/images/emoticons/happy.png"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-9 jive-image" src="https://community.jmp.com/legacyfs/online/11025_pastedImage_20.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8. Make sure to assign your shortcut!&amp;nbsp; You will get an extra ninja level for that!&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="jive-image image-10" src="https://community.jmp.com/legacyfs/online/11026_pastedImage_21.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Hit OK and level up!&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;You may get this customization screen - just hit Ok&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-11 jive-image" src="https://community.jmp.com/legacyfs/online/11027_pastedImage_22.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;If you are one of those visual folks and want to see your new button - just head to &lt;SPAN style="font-weight: bold;"&gt;View --&amp;gt; Toolbars&lt;/SPAN&gt; and make sure your new Ninja toolbar is checked&lt;/P&gt;&lt;P style="margin: 0in;"&gt;&lt;IMG class="image-12 jive-image" src="https://community.jmp.com/legacyfs/online/11028_pastedImage_23.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;IMG class="image-13 jive-image" src="https://community.jmp.com/legacyfs/online/11029_pastedImage_24.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;IMG class="jive-image image-14" src="data:image/png;base64,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" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Enjoy your new Nina Table Skills!&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;Best,&lt;/P&gt;&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;don&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Feb 2016 00:18:00 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Wasatch-Front-JMP-Users-Group/Summary-Table-Ninja-Style/m-p/28927#M29</guid>
      <dc:creator>dkent</dc:creator>
      <dc:date>2016-02-19T00:18:00Z</dc:date>
    </item>
  </channel>
</rss>

