topic | standard approach | faster approaches | links |
General | | | |
learn scripting | trial and error | watch the recordings of theJSL Scripters Club Meetings | |
| | | |
Data import | | | |
open multiple data files | use open() (inside a for loop) | use MFI (faster csv reader!) | Open multiple Files |
get a list of files | generate the file list - via Python, command prompt etc. and paste it into a new JMP table | MFI → right click on file list → Make into data table | |
find a file in a deep/complicated network tree structure | use MFI or Windows File dialog | create a wrapper for Python/GLOB | |
| | | |
Data tables | | | |
change column entries | step by step via for loop | data table subscripting | Data table subscripting |
| ... | dt << begin/end data update; before/after the loop | Very slow loop behaviour |
add columns to a data table | merge data tables via Tables/Update | first aggregate via Tables/Summary, then merge via Tables/Update | Speed up Tables/Update |
column aggregation with restrictions (1) | the new approach via Where (JMP18)
col Max(:weight, :sex, where(:age==13))
is easy to remember, but very slow doesn't work yet. | use the old approach via If: col Max(if(:age=13,:weight,.),
:sex)
It looks more complicated but it's orders of magnitude faster *) | Col-Median-and-others:Where option |
column aggregation with restrictions (2) | *) unfortunately, with a character comparison Col... gets very (!!!) slow:
col Max( if(:sex=="M", ...) | ->use if(:sex2==1,...) | How-do-I-use-the-Col-Maximum-Formula-with-a-where |
| ... | replace :sex=="M"
with contains(:sex,"M") | How-do-I-use-the-Col-Maximum-Formula-with-a-where |
count words | e.g. count xxx in :col: N Rows(loc(Words(:col),"xxx")) | (Length(:col)-
Length(Substitute(:col, "xxx", ""))
)/3
| Count number of occurrences of specific words in a string |
rank unique |
New Column( "rank_unique",
Formula( Col Minimum(
Col Rank( If(
Row() == Col Min( Row(),
:age, :sex ), 1 ), :age ),
:age,:sex))
| support this wish with a Kudo: | Add dense ranking to Ranking Tie and Col Rank functions |
Recode | can be very slow in combination with other options | apply the option in a second step | Recode - Parse as Number |
replace values with other values | for loop or Recode | use DataTable subscripting | Replace missing values with 0 Should you Loop through a data table or use Recode, or use Get Rows Where to change values in a data... |
select rows based on a formula | If dt << select where() is too slow ... split it into 2 steps: | myrows= dt << get rows where(); dt << select rows(myrows) | Formula to check if any of a list of items is contained in the rows of a column |
spec calcualations | some manual JSL code | support this wish with a Kudo: | 🙏 is in spec (value) |
| | | |
Graphs | | | |
| | | |
| | | |
Reports | | | |
| | | |
| | | |
Export | | | |
| | | |
| | | |
| | | |
Database access | | | |
| | | |
| | | |
| | | |
Neural Networks | | | |
| | | |
| | | |
| | | |
... | | | |
| | | |