如何使用JSL从JSL公式中自动提取该公式使用的列名,并将其分组。
例如,在图像1中,自动提取列名称以得到2的组合。
谢谢!
dt = Current Data Table();
dt << New Column( "text", formula( :K36 >= 71.93 & :XA >= -32.3 & :a1 >= -43.67 & :A56 < 18.9 ) );
dt << run formulas;
Column( "text" ) << deleteFormula;

您将必须遍历用于该公式的表达式的参数,识别列,然后将它们存储在列表中。
请参阅JMP 帮帮我 > JMP文档库 > 脚本指南 > 第8章:列表和表达式 >
检索存储的表达式而不是结果部分。完整描述和演示了概念以及必要的支持功能。
可能此脚本为您完成了工作:
// generate a table
dt = New Table( "testdata",
add rows( 3 ),
New Column( "K36", Continuous, set values( [70, 80, 90] ) ),
New Column( "XA", Continuous, set values( [30, 32, 33] ) ),
New Column( "a1", Continuous, set values( [-50, -40, -30] ) ),
New Column( "A56", Continuous, set values( [10, 20, 10] ) )
);
// add a formula
dt << New Column( "f1", formula( :K36 >= 71.93 & :XA >= -32.3 & :a1 >= -43.67 & :A56 < 18.9 ) );
dt << run formulas;
// get formula, convert to string and split words
formula = dt:f1 << get formula;
formula_txt_words = Words( Char( Name Expr( formula ) ) );
// search for column names in words and put it into list
columns_lst = {};
For( i = 1, i <= N Arg( formula_txt_words ), i++,
If( Starts With( formula_txt_words[i], ":" ),
Insert Into( columns_lst, Substitute( formula_txt_words[i], ":", "" ) )
)
);
Show( columns_lst );
// Group columns
dt << group columns( "Cols used by f1", columns_lst );
// Column( "text" ) << deleteFormula;