我正在开始编写脚本来查找许多列的两个测量值之间的增量。
当列名有破折号时,我很难制作列公式....
用于删除引号的解析命令将破折号更改为减号操作数,然后与我要完成的操作混淆。
错误日志:
意外的“_92MHz_test_data”。 也许缺少“;”或者 ”,”。
这是脚本(如果列的名称中没有操作数,则该脚本有效。
例如,
dt = 当前数据表();
Col_Name = "差异"; // 列 (5) - 列 (300)
Col_Name1_char = char(列名(5)); // "DWK112079-01_92MHz_test_data 的 bin""
Col_Name2_char = char(列名(300));// "DWK112079-01_90MHz_test_data 的 bin""
Col1_Name = (concat(":",(Col_Name1_char))); //":DWK112079-01_92MHz_test_data的bin";
Col2_Name = ((concat(":",Col_Name2_char))); // ":DWK112079-01_90MHz_test_data 的bin";
Formula_I = ((concat(col1_Name, " - ", Col2_Name))); //制作公式表达式
a = Expr(新列(X,公式(Z))); // 名为 Diff 的新列
b = 替代(名称 expr(a),Expr(X),Col_Name,Expr(Z),解析(Formula_I)); // 当 Colnames 的名称中有“-”时,这会出错
评估(b);
//笔记:
显示(公式_I,解析(公式_I));
//注:Formula_I = ":DWK112079-01_92MHz_test_data 的bin - :DWK112079-01_new_updated_test_data 的bin";
//注意 Parse(formula_I) = :bin of DWK112079 - 1;这不是我想要的
JMP 将列名中间的“-”解释为减法。因此,您需要向 JMP 表明整个术语是一个列名。最简单的方法是使用命名结构
":列名"n
以下是对您的脚本进行的修改,并进行了更改
names default to here(1);
dt = Current Data Table();
Col_Name = "diff"; // column(5) - Column(300)
Col_Name1_char = Char( Column Name( 5 ) ); // "bin of DWK112079-01_92MHz_test_data""
Col_Name2_char = Char( Column Name( 300 ) );// "bin of DWK112079-01_90MHz_test_data""
Col1_Name = (Concat( ":\!"", (Col_Name1_char), "\!"n" )); //":bin of DWK112079-01_92MHz_test_data";
Col2_Name = ((Concat( ":\!"", Col_Name2_char , "\!"n" ))); // ":bin of DWK112079-01_90MHz_test_data";
Formula_I = ((Concat( col1_Name, " - ", Col2_Name ))); //Make the formula expression
a = Expr(
New Column( X, formula( Z ) )
); // New column with name Diff
b = Substitute( Name Expr( a ), Expr( X ), Col_Name, Expr( Z ), Parse( Formula_I ) ); // This has error when Colnames has "-" in the name
Eval( b );
//Note:
Show( Forumula_I, Parse( Formula_I ) );
//Note : Formula_I = ":bin of DWK112079-01_92MHz_test_data - :bin of DWK112079-01_new_updated_test_data";
//Note Parse(formula_I) = :bin of DWK112079 - 1; This is not what I want