| topic |
standard approach |
faster/optimized approaches |
| 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 |
with a character comparison Col(if(... gets very (!!!) slow:
col Max( if(:sex=="M", ...)
|
a) use if(:sex==1,...)
|
How-do-I-use-the-Col-Maximum-Formula-with-a-where (fixed in V19) |
| |
...
|
b) replace :sex=="M"<BR />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))
|
Col Score(:age, :sex)
(v19)
|
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 table |
| 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: |
:folded_hands: is in spec (value) |
| |
|
|
|
| Graphs |
|
|
|
| |
|
|
|
| |
|
|
|
| Reports |
|
|
|
| |
|
|
|
| |
|
|
|
| Export |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| Database access |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| Neural Networks |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| ... |
|
|
|
| |
|
|
|